ODBC连接问题
PB用ODBC连接数据库(SQL Server)和用专用接口连接数据库的区别

问题1:PB用ODBC连接数据库(SQL Server)和用专用接口连接数据库的区别?我发现PB用专用接口连接数据库时,对Varchar型字段最多只能存200多个汉字,但是用ODBC 连接可以存4000个,可达到Varchar(8000)的最大长度,这是什么原因,怎么改进?专用接口连接数据库时,对SQL Server的存储过程支持要比ODBC 好,如果用ODBC 连接,对带参数的数据窗口(采用存储过程),没法传递参数,但是专用接口连接数据库却可以。
问题2:关于PB动态生成数据窗口的问题。
比如用如下代码生成一个数据窗口,在编辑时每一个编辑框都会出现一个兰色的背景框或者底框,怎么去掉?==========================================================string ERRORS, sql_syntaxstring presentation_str, dwsyntax_strsql_syntax = "SELECT emp_data.emp_id,"&+ "emp_data.emp_name FROM emp_data "&+ "WHERE emp_data.emp_salary > 45000"presentation_str = "style(type=grid)"dwsyntax_str = SQLCA.SyntaxFromSQL(sql_syntax, &presentation_str, ERRORS)IF Len(ERRORS) > 0 THENMessageBox("Caution", &"SyntaxFromSQL caused these errors: " + ERRORS)RETURNEND IFdw_1.Create( dwsyntax_str, ERRORS)IF Len(ERRORS) > 0 THENMessageBox("Caution", &"Create cause these errors: " + ERRORS)RETURNEND IFDW_1.settransoject(sqlca)dw_1.retrieve()==========================================不能贴图,大家可以自己实验一下,应该是生成那个SQL的字符串sql_syntax不够细致,怎么样能使数据窗口漂亮些。
测试ODBC连接

在软件操作中,经常出现连接不到服务器的情况
ODBC没有连接上就是导致连接不到服务器的原因之一。
在此是测试ODBC是否连接的详细步骤。
1、在控制面板中选择“管理工具”
注意:在XP系统中,在控制面版-----性能与维护-----管理工具
图示如下:
2、选择“数据源(ODBC)”
3、点击“添加”
4、选择SQL server
5、输入名称(任意)和服务器地址
(注意:填服务器地址的时候,若在客户端测试请输入服务器的ip地址)
6、选择“使用用户输入登陆ID和密码的SQL server验证
输入登陆ID和密码(一般口令为SA,密码为空)
7、点击下一步,直至完成即可
8、测试数据源
9、测试成功 >0<
注意:
1服务器地址的输入。
2用户ID和密码的输入。
若输入有误同样会出现测试失败的情况。
关于ODBC数据源连接文本

关于ODBC数据源连接⽂本关于ODBC数据源连接⽂本 在《外部数据库的连接原理》⼀讲中我们说过,ODBC提供对多种数据库的⽀持,如dBase、Access、MS SQL Server及Oracle,也就是说运⽤ODBC数据源中所提供的连接代码,我们可以实现对多种数据库的连接。
以连接Access数据库为例,ODBC数据源连接⽂本的格式是: “Driver={数据库驱动程序};Dbq=数据库⽂件;” 在以上连接⽂本中,如果数据库跟程序在同⼀⽬录下,或者⽤变量DefaultDir指定了数据库所在⽬录,则数据库⽂件可以不⽤全路径名,如下即可: “ODBC;DBQ=MSAccess.mdb;Driver={Microsoft Access Driver (*.mdb)};” 如下也可: “ODBC;DBQ=MSAccess.mdb;DefaultDir=d:/Downloads/e21;Driver={Microsoft Access Driver (*.mdb)};” 如果数据库跟程序不在同⼀⽬录下,或者没有⽤变量DefaultDir指定数据库所在⽬录,则数据库⽂件需要⽤全路径名,如下: “ODBC;DBQ=E:/Quake III Arena/MSAccess.mdb;Driver={Microsoft Access Driver (*.mdb)};” 以上所说的是连接Access数据库的格式,那么连接其他数据库的ODBC数据源连接⽂本⼜是怎样的?连接不同类型的数据库要使⽤不同的对应驱动程序,没忘记吧!不同的驱动程序当然它们的参数组合也就不同了,每⼀种不同驱动程序都有其特定的的参数形式: ⑴、MS Access ODBC DSNless 连接: ☆、参数:Driver 设置值:{Microsoft Access Driver (*.mdb)} ☆、参数:Dbq 设置值:实际路径⽂件名称 ☆、例句: “Driver={Microsoft Access Driver (*.mdb)};Dbq=c:/somepath/dbname.mdb;Uid=Admin;Pwd=pass; ” ⑵、dBase ODBC DSNless 连接: ☆、参数:Driver 设置值:{Microsoft dBASE Driver (*.dbf)} ☆、参数:Dbq 设置值:实际路径⽂件名称 ☆、例句: “Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:/somepath/dbname.dbf; ” ⑶、Oracle ODBC DSNless 连接: ☆、参数:Driver 设置值:{Microsoft ODBC for Oracle} ☆、参数:Dbq 设置值:实际路径⽂件名称 ☆、例句: “Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass; ” ⑷、MS SQL Server DSNless 连接: ☆、参数:Driver 设置值:{SQL Server}; ☆、参数:Server 设置值:服务器名称 ☆、参数:Database 设置值:数据表名称 ☆、参数:Uid 设置值:⽤户名称 ☆、参数:Pwd 设置值:密码 ☆、例句: “Driver={SQL Server};Server=servername;Database=dbname;Uid=sa;Pwd=pass; ” ⑸、MS Text Driver DSNless 连接: ☆、参数:Driver 设置值:{Microsoft Text Driver (*.txt; *.csv)} ☆、参数:Dbq 设置值:实际路径⽂件名称 ☆、例句: “Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:/somepath/;Extensions=asc,csv,tab,txt;Persist Security Info=False;” ⑹、Visual Foxpro DSNless 连接: ☆、参数:Driver 设置值:{Microsoft Visual FoxPro Driver} ☆、参数:SourceType 设置值:DBC ☆、参数:SourceDB 设置值:实际路径⽂件名称 ☆、例句: “Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:/somepath/dbname.dbc;Exclusive=No;” ⑺、MySQL DSNless 连接: ☆、参数:Driver 设置值:{mysql} ☆、参数:database 设置值:数据表名称 ☆、参数:uid 设置值:⽤户名称 ☆、参数:pwd 设置值:密码 ☆、例句: “driver={mysql}; database=yourdatabase;uid=username;pwd=password;option=16386”*******************************************************************SQL语⾔简介 在上⼀讲中我们介绍了连接外部数据库的⽅法,那么连接之后怎样对外部数据库进⾏读取、显⽰、增删、更新、查询等操作呢?这些操作需要通过外部数据库等对象调⽤SQL指令才能完成。
qt连接数据库sql server ODBC 不能正常驱动解决办法

1 经过小白的两天努力终于将qt连接sql server 数据库的问题解决网上的例子几乎尝试完毕,希望我的这些能给大家些参考:Qt连接sql server ODBC不能驱动,1 第一步检查自己的目录下面有没有这样的两个文件如图:如果没有自己需要手动驱动,或则通过代码检查自己的qt是否支持对sql server的驱动代码如下所示:运行结果如下图所示:这里面是有QODBC说明是对sql server的支持,当然有的时候存在,在我们打开数据库的时候未必支持,也许你上面qsqlodbc.dll 和qsqlodbcd.dll库不是你自己的库,可能是重网上下载的,或则给别人要的,这个两个库相当重要,下面介绍如何自己编译这两个库,我是在windows 下手都编译的当然在windows下命令行也可以自己输入命令进行编译生成指定的动态库,当然啦命令行的,网上百度一大堆,下面小白自己介绍一下自己手动的生成动态库的方法:1 步骤1 入下图:进该目录下:打开.pro文件:第二步:构建->重新构建项目odbc->查看qt\qt5.6.0\5.6\Src\qtbase\plugins\sqldrivers\odbc目录下面是否有qsqlodbc.dll和qsqlodbcd.dll这两个库,如果有恭喜你构建成功,如果没有可去这个文件下面找这两个库(小编的当时就在这个文件下面)路径入下图所示:第三步骤:将搞好的库拷贝复制过来放到如下文件夹里面:点击运行就可以连接你的sql server 数据库啦以上不同的可能路径不对其他的可按步骤进行操作:也许开发环境的不同导致不能正常运行:Qt 5.6.0.32位windows server 2012 64 位系统连接sql server 2012以上简单的介绍希望对你有点帮助!再此非常感谢那位来自南京的朋友的帮助!。
wincc的ODBC连接

对WinCC的远程ODBC连接显示订货号问题:WinCC V5.1版本的标准设置中,不可以设置ODBC连接。
它被用来通过MS Access, MS Query 等访问WinCC数据库。
需要注意哪些设置?解答:WinCC 站方面的准备(如果要访问运行系统的数据库,必须启动WinCC 运行系统)。
打开“Sybase Central”,确定WinCC的数据库名。
图1:启动“Sybase Central”选择菜单选项“工具> 连接”。
在打开的掩码中按以下输入用户ID:dba口令:sql图2:登录到数据库在Sybase窗口中,可看到WinCC站名在窗口左边。
点击+ 图标放大画面。
现在可看到2个数据库。
记住想要进行远程访问的数据库名。
以RT 结尾的数据库为运行系统数据库,其它的为CS数据库。
图3a: 确定数据库名鼠标右键点击所要数据库的属性,也可以选择数据库名并将它复制到剪贴板。
如果这样做并将名字储存在文本文件中,可以避免符号使用中的错误。
(图3b)。
图3b:复制数据库名到剪贴板远程站上的必要设置(另一台计算机)。
从控制面板中启动“数据源(ODBC)” (Windows NT)或通过“启动> 程序> ODBC数据管理器”(Windows 2000)启动。
图4:ODBC窗口中的设置切换到“系统DSN”标签并选择“添加”(在此需注意“用户DSN”与“系统DSN”间的不同。
有关于它们的解释在同窗口中的蓝色文本框中)图5:选择驱动程序“Adaptive Server Anywhere 7.0”在“ODBC”标签中,输入一个独有的名,例如在数据库中的名(但它也可以是所选择的其他名字)。
必须在“延迟AutoCommit直到语句关闭”下打勾,以便在关闭一个链接着的表格时传送所做的改变。
图6:ODBC标签中的设置请注册如下:(图7):用户ID:dba口令:sql图7:“注册”标签中的条目:“数据库”标签中的输入域(图8)含义如下:“服务器名”是数据库所在的WinCC站的站名“数据库名”是上面所提到的名字(SCVIEW)。
连接odbc中的用户dsn时出错

连接odbc中的用户dsn时出错2007-09-12 14:35pingweiwang分类:数据库DB |浏览3030 次SQL State;01000SQL Server 错误11001[ODBC SQL Server Driver][TCP/IP Sockets] Connection Open(Connection Open(Con nect)连接错误SQL Serer错误6未找到指定的SQL Server请问,是不是sql企业服务器里设置错误?分享到:2007-09-12 15:38提问者采纳在SQL Server 2000 自定义安装中,如果只选择了TCP/IP 协议,并禁用了所有其他协议,SQL Server 可能无法初始化并侦听TCP/IP 套接字。
服务器网络实用程序显示它正在侦听TCP/IP 端口1433,但它并未侦听该端口。
客户机可能无法连接,并且可能会出现以下错误消息:Connection failed:SQL State:'01000' SQL Server Error:11004 [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (Connect()).Connection Failed:SQL S tate:'08001' SQL Server Error:6 [Microsoft][ODBC SQL Server Driver][TCP/IP Socket s]Specified SQL server not found.Unable to connect to server 'servername':Server:Msg 6, Level 16 state 1. [Microsoft] [ODBC SQL Server Driver][TCP/IP Sockets]Specified SQL server not found.[TCP/IP Sockets]Specified SQL server not found.[TCP/IP Sockets]ConnectionOpen (Connect()).请注意:除这种特定情况外,如果有其他TCP/IP 连接问题,也可能会出现以上错误消息。
ODBC连接数据库总结

ODBC连接数据库总结ODBC,全称为Open Database Connectivity,是一种连接数据库的API(应用程序接口),可以使用通用的SQL查询语言来访问各种不同的数据库。
ODBC提供了一个标准化的接口,使得应用程序可以通过统一的方式与不同类型的数据库进行通信。
ODBC的优势在于它提供了一个简单、灵活、可扩展的方法来连接多种数据库系统。
这使得开发人员可以使用相同的代码来连接和操作不同类型的数据库,而不必关心底层数据库的细节。
ODBC还提供了高性能的数据访问和查询功能,可以实现快速的数据检索和处理。
ODBC的使用过程包括几个关键步骤:1.安装和配置ODBC驱动程序:ODBC驱动程序是用来连接特定类型的数据库的组件。
在使用ODBC之前,需要安装和配置适当的ODBC驱动程序。
这通常涉及到安装驱动程序软件,并进行一些配置设置,如指定数据库的位置和连接参数等。
2.创建ODBC数据源:ODBC数据源是一个逻辑名称,用来标识要连接的数据库。
可以通过ODBC管理器来创建和配置ODBC数据源。
配置数据源时,需要提供一些信息,如数据库类型、主机名、端口号、用户名、密码等。
创建数据源后,可以通过该数据源来连接数据库。
3.编写应用程序代码:在编写应用程序代码时,需要使用ODBCAPI来连接数据库和执行SQL查询。
ODBCAPI提供了一组函数和数据结构,用于连接数据库、执行SQL查询、获得结果集等操作。
开发人员需要熟悉ODBCAPI,并使用合适的函数和方法来完成所需的操作。
4.运行和测试应用程序:完成应用程序的编写后,可以进行运行和测试。
在运行应用程序时,需要确保已正确安装和配置了ODBC驱动程序,并且已创建了相应的ODBC数据源。
在测试过程中,可以执行各种SQL查询和操作,来验证数据库连接和数据访问的功能。
ODBC的使用有一些注意事项和最佳实践:1.使用合适的ODBC驱动程序:不同类型的数据库需要使用特定的ODBC驱动程序来连接。
win2003 64位系统下ODBC连接使用

命令:Cscript C:\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
3、重装安装32Bit .NET 2.0
命令:C:\WINDOWS\\Framework\v2.0.50727\aspnet_regiis.exe -r
win2003 64位系统下ODBC连接使用 转自win2003 6服务器若是windows系统,就会采用64位win2003的结构。可是我们编写的程序绝大多数都是在x86下32位cpu架构中 编译的,要正常移植到64位机器还真的是很麻烦,不仅要求应用程序是64位模式编译,还需要数据库也得是64位,iis64位,framework64 位,好在相应的厂商都提供这些支持组件。不知道有人遇到过像我这样的问题么,应用中有需要增加一个Access数据库导入功能,这就需要连接ODBC的 mdb驱动,可是Microsoft OLE DB Provider for Jet不支持64位系统,即使安装了office2007后,发现ODBC也没有任何变化,这下尴尬了。
完成以上修改后,重启电脑,运行网站程序,发现一切都如期望的一样工作!
祝大家好运!
windows2003 64位系统IIS配置方法:
1、因用模版安装 2.0需先卸载64位的.net2.0
命令:C:\WINDOWS\\Framework64\v2.0.50727\aspnet_regiis.exe –u
设置对应的环境变量:右击”我的电脑” – “属性” – “高级” – “环境变量” – “系统环境变量”:
1、新建NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意中间有空格,这个如果不设,toad查询中文会是乱码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步骤:
一看ping 服务器IP能否ping通。
这个实际上是看和远程sql server 2000服务器的物理连接是否存在。
如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。
二在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。
如telnet 202.114.100.100 1433
通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。
如果有问题,通常这一步会出问题。
通常的提示是“……无法打开连接,连接失败"。
如果这一步有问题,应该检查以下选项。
1 检查远程服务器是否启动了sql server 2000服务。
如果没有,则启动。
2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。
检查方法是,在服务器上打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。
3 检查服务器的tcp/ip端口是否配置为1433端口。
仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。
事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。
如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。
4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。
5 检查服务器是否在1433端口侦听。
如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。
检查方法是在服务器的dos或命令行下面输入
netstat -a -n 或者是netstat -an,在结果列表里看是否有类似tcp 127.0.0.1 1433 listening 的项。
如果没有,则通常需要给sql server 2000打上至少sp3的补丁。
其实在服务器端启动查询分析器,输入select @@version 执行后可以看到版本号,版本号在
8.0.2039以下的都需要打补丁。
如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。
恭喜你,你马上可以开始在企业管理器或查询分析器连接了。
三检查客户端设置
程序->Microsoft SQL Server -> 客户端网络使用工具。
像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。
四在企业管理器里或查询那分析器连接测试
企业管理器->右键SQlserver组->新建sqlserver注册->下一步->写入远程IP->下一步->选Sqlserver登陆->下一步->写入登陆名与密码(sa,password)->下一步->下一步->完成查询分析器->文件->连接->写入远程IP->写入登录名和密码(sa,password)->确定
通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒。
修改默认连接超时的方法:
企业管理器->工具->选项->在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡->连接设置->在登录超时(秒)后面的框里输入一个较大的数字
查询分析器->工具->选项->连接->在登录超时(秒)后面的框里输入一个较大的数字
通常就可以连通了,如果提示错误,则进入下一步。
五错误产生的原因通常是由于SQL Server使用了"仅Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如sa )进行连接。
解决方法如下所示:
1 在服务器端使用企业管理器,并且选择"使用Windows 身份验证"连接上SQL Server。
2 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。
3 在"身份验证"下,选择"SQL Server和Windows "。
4 重新启动SQL Server服务。
(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。
附注:在连接本地服务器时,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是完全不同的协议)
1.打补丁(下载补丁后要安装)
2。
看这样可以不:TCP/IP协议-->属性-->高级-->选项-->TCP/IP筛选-->属性-->在TCP 端口设置14331。
打补丁(下载补丁后要安装)
2。
看这样可以不:TCP/IP协议-->属性-->高级-->选项-->TCP/IP筛选-->属性-->在TCP 端口设置1433
Telnet的问题,常会涉及到一些端口的应用。
我们也曾经探讨过一些其他端口,例如23,25端口的问题。
那么今天主要讲解一下Telnet 1433端口的问题。
看看如何解决Telnet 1433端口打不开的问题。
1、数据库服务未启动.
2、防火墙屏蔽了对telnet的响应.
3、SQL服务未在1433端口上启动监听.
如果你用查询分析器可以连接上,应用软件也连得上,只是Telnet 1433端口失败;并且也未改动过服务端口,其它都是正常的,那么这种问题在XP2+SQL SERVER 2000环境中最常见.解决办法几种:
1、反安装XP2的补丁,这样通常是不会出现SQL SERVER连不上的问题的.
2、XP2的操作系统安装SQL SERVER 2000的SP3补丁可解决Telnet 1433端口无法打开的问题.
3、其它操作系统比如2003的,最好补一下SQL SP4的.
检查你的SQL有没有打补丁,没有的话要打上补丁,检查的方法是在查询分析器中运行: select @@version
如果出来的版本号是8.00.2039以下,则表明你未安装sp4的补丁,要装上.
SQL补丁下载:
全部补丁的位置
/downloads/details.aspx?FamilyId=8E2DFC8D-C20E-4446 -99A9-B7F0213F8BC5&displaylang=zh-cn
应该安装的是
/download/9/b/f/9bff6646-2cdb-4069-ada0-548be9 cb9338/SQL2000-KB884525-SP4-x86-CHS.EXE
注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装如果你的操作系统是xp,那么在安装xp sp2后,不管以前是否安装过sql sp4,都要再安装一次,并且在防火墙中开启1433端口,否则无法被其他电脑访问
如何检查Telnet 1433端口是否在监听?或者检查有哪些端口在监听?
1、如果打了sql sp3,并且windows2003防火墙已经关闭, 在命令提示符下执行
netstat -na 应该可以看到tcp 1433在监听.
2、启动企业管理器查看SQL SERVER 2000 的系统日志,在日志中可以看到SQL SERVER 启动的是那些协议来等待远程连接的.
另外记得打完补丁,重新启动机器,或者重新启动服务.
原文:/whsjsoft/blog/item/66d5fb50eebce6581038c289.html。