关于ODBC中SQLDriverConnect 和 SQLDriverConnectW连接问题 5C

Hi,Guys

在采用unixODBC连接Mysql数据库,遇到以下问题:

使用SQLDriverConnect进行连接,正常
使用SQLDriverConnectW进行连接,出现下面的错误,说数据源找不到.

  [unixODBC][Driver Manager]Data source name not found, and no default driver specified

采用的都是同样的配置
环境:
mysql-connector-odbc-5.3.4-linux-glibc2.5-x86-32bit
unixODBC 2.3.2


配置信息

odbcinst.ini

[MySQL]
Driver = /usr/local/lib/libmyodbc5w.so

odbc.ini

[log4cxx]
Driver  = MySQL
Server  = localhost
Port    = 3306
Database= log
User    = root
Password= 123456
Socket  = /var/run/mysqld/mysqld.sock 

C代码 SQLDriverConnectW

int main() {
 SQLHENV env;
 SQLHDBC dbc;
 SQLRETURN ret; /* ODBC API return status */
 SQLWCHAR outstr[1024];
 SQLSMALLINT outstrlen;
 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
 SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
 SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
 ret = SQLDriverConnectW(dbc, NULL, (SQLWCHAR *)"DSN=log4cxx;", SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
 if(ret < 0) {
  printf("asdfasdfasdfsadfsadf\n");
 }
 if (SQL_SUCCEEDED(ret)) {
  printf("Connected\n");
  if (ret == SQL_SUCCESS_WITH_INFO) {
   printf("Driver reported the following diagnostics\n");
   extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
  }
  SQLDisconnect(dbc);/* disconnect from driver */
 } else {
  fprintf(stderr, "Failed to connect\n");
  extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
 }
 /* free up allocated handles */
 SQLFreeHandle(SQL_HANDLE_DBC, dbc);
 SQLFreeHandle(SQL_HANDLE_ENV, env);
 return 0;
}

C代码 SQLDriverConnect

int main() {
 SQLHENV env;
 SQLHDBC dbc;
 SQLRETURN ret; /* ODBC API return status */
 SQLCHAR outstr[1024];
 SQLSMALLINT outstrlen;
 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
 SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
 SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
 ret = SQLDriverConnect(dbc, NULL, (SQLCHAR *)"DSN=log4cxx;", SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
 if(ret < 0) {
  printf("asdfasdfasdfsadfsadf\n");
 }
 if (SQL_SUCCEEDED(ret)) {
  printf("Connected\n");
  if (ret == SQL_SUCCESS_WITH_INFO) {
   printf("Driver reported the following diagnostics\n");
   extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
  }
  SQLDisconnect(dbc);/* disconnect from driver */
 } else {
  fprintf(stderr, "Failed to connect\n");
  extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
 }
 /* free up allocated handles */
 SQLFreeHandle(SQL_HANDLE_DBC, dbc);
 SQLFreeHandle(SQL_HANDLE_ENV, env);
 return 0;
}

1个回答

宽字符中的各种字符串参数是否也对应的转换为同样的编码格式了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
SQLDriverConnect连接数据源求助
SQLRETURN SQLDriverConnect(rn SQLHDBC ConnectionHandle,rn SQLHWND WindowHandle,rn SQLCHAR * InConnectionString,rn SQLSMALLINT StringLength1,rn SQLCHAR * OutConnectionString,rn SQLSMALLINT BufferLength,rn SQLSMALLINT * StringLength2Ptr,rn SQLUSMALLINT DriverCompletion);rn其中InConnectionString 有哪几种形式rn我想得到执行代码后生成一个.dsn文件,以后可以通过这个文件连接相关的SQL数据库,请牛牛指点一二
用SQLDriverConnect时为什么会报error C2664: 'SQLDriverConnectW' :
SQL_SUCCEEDED(SQLDriverConnect(*pHdbc, NULL, ConnectStr, SQL_NTS, ConnectStrOut, sizeof(ConnectStrOut), &outLen, SQL_DRIVER_COMPLETE)))rnrn在使用SQLDriverConnect连接数据库的时候为什么会报下面的错误:rnerror C2664: 'SQLDriverConnectW' : cannot convert parameter 3 from 'unsigned char [255]' to 'unsigned short *'
SQLDRIVERCONNECT
刚刚开始接触ODBC,结果SQLDriverConnect中的参数总是有问题。哪位能给我详细的解释下哈。尤其是其中的窗口句柄 的问题。就这么点分了……
关于ODBC连接的问题
技术信息(适用于支持人员)rnrn错误类型:rnMicrosoft OLE DB Provider for ODBC Drivers (0x80004005)rn/klhg/bbs/dl.asp, 第 31 行rnrnrn浏览器类型:rnMozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) rnrn页:rnPOST 23 bytes to /klhg/bbs/dl.asprnrnPOST 数据:rnusername=11&userpass=11 rnrn时间:rn2002年3月28日, 9:26:09 rnrnrn详细信息:rnMicrosoft 支持
关于odbc连接的问题?
我现在做了个数据库系统,现在觉的很不方便的地方是:rn我写了个建立新ODBC的代码,但是需要自己手动去ODBC上去连接一次,这样程序才会认定连接建立。后面的和数据库有关的操作才能开始,现在我就想建立一个测试按纽,客户建立ODBC(在自己程序界面上,已开发)后,通过按测试按纽达到手动连接的作用,这段代码怎么写?????如果不能的话,那ODBC界面的对象名是什么,也可以通过新建对象来调出配ODBC界面出来,不用客户自己去控制面板上无找。。。。
关于odbc连接的问题
各位高手,我最近碰到一个问题,通过ocbc连接sql数据库,有时会断开连接,但是网络都是正常的,会不会是防火墙的原因。rn[Microsoft][SQL Native Client]Communication link failurern[Microsoft][SQL Native Client]TCP Provider: The network connection was aborted by the local system.rn出现上述的错误类型,是什么原因啊?rn
关于odbc连接问题
我用ms paradox Driver(*db)做了一个odbc连接,连接后缀是db的数据表,rn在程序中执行如下代码rncn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=good;Initial Catalog=D:\DB"rnrec.Open "select * from goods where gid = 1017390", cn, adOpenDynamic, adLockOptimisticrn如果没有where子句程序正常,但加上where子句程序报错[Microsoft][ODBC Paradox Driver] 参数不足,期待是 1。请问原因。
关于ODBC的连接问题。
这几天才学ASP,想写一个留言版,但发现在写入数据时有ODBC连接错误,程序是:rn<%rn ID=request.form("ID")rn email=request.form("email")rn msg=request.form("msg")rnrn Application.Lockrn set dbConn2 = Server.CreateObject("ADODB.Connection")rn dbConn2.Open "Driver=Microsoft Access Driver(*.mdb);DBQ=" & _rn Server.MapPath("MSGBOARD.MDB")rnset dbrs=dbconn2.excute("Insert Into Message(名称, EMail, 留言内容) Values('"&ID&"', '"&_rn email&"','"&msg&"')")rn rn dbConn2.Closern Application.Unlockrn response.redirect("showboard.asp")rn%> rn 在IE运行它指明 Microsoft OLE DB Provider for ODBC Drivers (0x80004005)rn/writemsg.asp, 第 8 行,我学过DELPHI,在我看来ODBC连接是没问题的,错在哪里?rnrn
关于PB中odbc的连接出错的问题
在应用程序的OPEN 中做了对数据库的初始化的程序:rnsqlca.dbms="odbc"rnsqlca.autocommit=falsernsqlca.dbparm="connectstring='dns=login'"rnconnect using sqlca;rnrnif sqlca.sqlcode<>0 then rn messagebox("提示","失败的原因是:" +sqlca.sqlerrtext)rn returnrnend ifrnopen(w_connect) rn在窗口中命令按钮的单击事件中写了下面的程序:rnrnrn//要实现的功能是从表中取出数据给控件赋值rn rnstring ls_name // ls_name为存储从表中取出的姓名字段的数值的变量rn rn select name into :ls_name from login;rnrnsle_name.text =ls_name //sle_name为窗口中的控件rnrn为什么在运行的时候总是提示"database c0038:sqlsate=3700 [sybase][odbc driver][asptive server anywhere] syntax error or access violation: near 'login'in name from [login]"?rn这是什么意思?是哪里的错误?
曾经用过ODBC中SQLDriverConnect的朋友帮一下忙
在改一个VB4.0写的项目时遇到点麻烦:rnrn它在连SQL库时用的是ODBC中的API: SQLDriverConnectrnrn但我在win2003+VB6的环境中就是联不上,返回的结果总是-1,哪位兄弟曾经用过,帮小弟一把吧rnrn源码如下:rnrn rc = SQLAllocEnv(henv)rn If rc <> SQL_SUCCESS Thenrn SYS_Error "Err"rn Call DescribeError(SQL_NULL_HDBC, SQL_NULL_HSTMT)rn SQL_Connect = Falsern Exit Functionrn End Ifrn rn rn rc = SQLAllocConnect(henv, CONNECTIONS(i).hdbc)rn If rc <> SQL_SUCCESS Thenrn SYS_Error "Err"rn Call DescribeError(SQL_NULL_HDBC, SQL_NULL_HSTMT)rn SQL_Connect = Falsern Exit Functionrn End Ifrnrn rn st = "DSN=" + szDSN + ";UID=" + szUID + ";PWD=" + szAuthStrrn st = st + ";APP=" + SYS_Get_Applicataion_Name()rn st = st + ";WSID=" + SYS_Get_Station_ID()rn st = st + ";LANGUAGE=" + "japanese"rn st = st + ";DATABASE=" + szDSNrnrn rc = SQLDriverConnect(CONNECTIONS(i).hdbc, 0, st, STR_AnsiLength(st), ost, ostmax, ostsz, SQL_DRIVER_COMPLETE) //************在这一步出错***************rnrn If rc <> SQL_SUCCESS And rc <> SQL_SUCCESS_WITH_INFO Thenrn SYS_Error "数据库未能连接"rn Call DescribeError(CONNECTIONS(i).hdbc, SQL_NULL_HSTMT)rn SQL_Connect = Falsern Exit Functionrn End Ifrnrn也曾经想过把所有与数据库有关的代码重写,但这样一来的话工作量太大了,所以想在此基础上进行修改
关于ODBC连接db数据库的问题?
连接db数据库时,是可以正常连接的。rn表也可以正常显示出来,但是打开表的时候却出现rnTable has no columns,possible invalid table format.rn(注:我试用了各种ODBC连接db的的驱动,都是上面这种情况。那个文件夹中除了有*.db以外,还有*.dbx,不知道这是哪种数据库,要用什么驱动才能连接上)rnrnrn谢谢
关于ODBC动态连接的问题
我用VC以ODBC驱动连接SQL SERVER,在SQL SERVER的查询分析器删除一行数据后,在应用程序的界面查看数据时,发现被删除的那一行数据没有了,但是却占了一行的空间,而且各个数据项都是以空格显示的。怎样让那一行不要显示呢?既然应用程序检测到删除了为什么还要显示呢?
一个关于odbc连接的问题
我在配置odbc数据源时,在“连接sql server 以获得其它配置选项的默认设置”这一项中,我输入相应id和密码后(我连接的sql是(local),我的windows系统没有设置登录密码),点击下一步,出现如下错误:rn“连接失败:rn sqlstate:‘01000’,rn sql server错误:2rn …………”rn实在不明白什么回事,望各位赐教!rn
关于ODBC和MSSQL的连接问题!
我们用的是Server:NT4.0 + MS SQL2000rn Client : Windows2000 PROrn当我的机器和服务器在同一个域时,进行ODBC配置时,配置成功时保存不下来!rn当我的机器和服务器不在一个域时,就不能成功的进行连接了!rn我想是不是MS SQL2000配置问题管理方面问题呀!
关于与ODBC数据源连接的问题
表中定了一个时间/日期型的字段,现在在对话框中加了一个"date time picker"的控件,想要把它与前面提到的字段连起来,从classwizard---member variables添加CTime类型变量后,在.cpp文件中出现DDX_FieldDateTimeCtrl(....),但在编译时认为DDX_FieldDateTimeCtrl没有申明( undeclared),此时我该怎么办.这些DDX函数都是在什么地方定义的?而且在联机帮助中好象也没有DDX_FieldDateTimeCtrl函数.rn请各位帮忙!
关于ODBC连接oracle的问题
我安装的驱动是oracle in orahome92,用VC通过ODBC驱动连接数据库,能否不需要在Oracle客户端中设置,只要安装了Cliend端就可以连接的方法?
关于ODBC数据源连接问题
我要实现两地(不同城市)服务器实现数据源共享功能,请问怎样实现,具体配置如何操作!谢谢!
关于odbc连接的问题,急!!
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' rn[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SQL Server 不存在或访问被拒绝 rnrn连接特不稳定,一会就出现上面的错误,一会又好了!大家帮忙看看是什么问题啊rn
关于ODBC连接db的问题
连接db数据库时,是可以正常连接的。rn表也可以正常显示出来,但是打开表的时候却出现rnTable has no columns,possible invalid table format.rn(注:我试用了各种ODBC连接db的的驱动,都是上面这种情况。那个文件夹中除了有*.db以外,还有*.dbx,不知道这是哪种数据库,要用什么驱动才能连接上)rnrnrn谢谢
关于form_builder连接odbc的问题!!!!!
我连接odbc以后,给我的提示是说ora-03121:未连接接口驱动程序-未执行功能rn,我想问下,我该怎么解决这个问题?
关于ODBC 连接oracle 的问题
小弟最近在执行一个SQL语句时,遇到一个奇怪的问题,rnrn语句如下:rnINSERT INTO [ODBC;DSN=pjgsDNS;UID=pjuser;PWD=bssoft001;].[表名](...) SELECT ... FROM 表名rn该语句在ACCESS连接中执行,rnrnoracle 数据库设置两个:一为pjgsorcl,用户名密码都是与sql中一样。二为pjinfo用户名密码都是与sql中一样。库中表机构等都一样。rnrnODBC 中配置:pjgsDNS 连接oracle 92数据库,数据库选择pjgsorcl或者pjinfo.用户名密码都正确,测试连接也成功。rnrn但是,在连接pjgsorcl数据库时是成功执行的,在连接pjinfo时提示错误:Microsoft Jet 数据库引擎找不到输入表或查询 '表名'。 确定它是否存在,以及它的名称的拼写是否正确。rnrnrn我不明白的地方就是,ODBC连接,还与数据库SID有关系嘛?为什么连接pjinfo的时候会报错?
关于“数据源ODBC”连接的问题,
我用的是win2000+Delphi7,我通过“数据源ODBC”创建一个新数据源(SQL Server),问题出现了:“下面有一个创建到哪一个服务器的下拉列表框”,我无法设置,因为我是单机用户。后来我找了一张SQL Server安装盘,结果无法安装,提示系统不支持,我记得我以前曾经装上过一次,是在WIN2000下装的,可这次为什么装不上呢?我该怎么般呢?请教各位大侠了?
关于odbc连接的一个问题
请问一下,如果a机器装有sql server数据库服务器,如果b机器想通过ODBC连到a机器,那么b机器的odbc如何设置,在线等,急!!!rn
关于连接ODBC数据库的问题.
有没有人用过odbc.net连接过数据库,rn本人现在有一个odbc的VFP数据库需要asp.net连接使用,但是不知道odbcconnection的connectionstring属性如何设置?rn我看到的教程中都是介绍access/sqlserver,,,但odbc的没见过,是不是ado.net无法连接odbc数据库??????
sqlconnect,sqldriverconnect
我创建了一个 ODBC ,指定到一个 Excel. 之后在程序中用 odbc api sqlconnect,sqldriverconnect 连接,提示 [ODBC Excel 驱动程序]可选的功能未实现rnrn请问是怎么回事,如何解决......rnrn
asp中连接ODBC的问题
我在asp中有以下连接Oracle ODBC的语句: rn Set conn = Server.CreateObject("ADODB.Connection") rn conn.ConnectionString = "DSN=test;UID=test;pwd=test;" rn conn.Open rn当运行到最后一行时报错:Microsoft OLE DB Provider for ODBC Drivers (0x80004005) rn而ODBC已经配置好且测试连接成功,用的是Oracle92版本,请高手们指点迷津. rn
odbc连接sybase简单问题(odbc连接)
我使用vc中CDatabase类的openex函数连接sybase正常,最近碰到一个连接不上的,数据库返回的错误是rnAttempt to locate entry in sysdatabases for database 'sa' by name failed - no entry found rnunder that name. Make sure that name is entered properly.rnrnct_con_drop(): user api layer: rnexternal error: There is a usage error. This routine has been called atrn请高手赐教,多谢
关于ODBC连接。
在bcb里面用ADO组件通过odbc数据源调用oracle数据库中的存储过程,rn数据源连接串connectionstring中有个参数是timeout用来设定执行最长时间,rn这时候如果存储过程执行时间超过它的话就会报错。rnrn可是我把存储过程扔进数据库以后,想让它执行就行了,我接着干我的活,rn并不想理它执行了多长时间甚至不想理它成功与否。rnrn这种效果可以达到吗? rn利用TTreadList可以把存储过程的调用过程放到后台进行,但是有办法担保时间超时rn的问题吗?能不能让ODBC不检测存储过程执行的是否完成?
关于 bde 和 odbc 的连接
请问它们都要多少版本的才能连到 oracle 上呢rn我用 tnsping oracle 是可以的rn但用这两个东西还是连不上
局域网中的ODBC连接?
一台数据库服务器,局域网中的其它计算机通过它存取数据,在设置ODBC时,有的能连上,有的不行,是通过TCP/IP 的1433端口连的。刚开始怀疑是防火墙,可是关了,还是有这种情况,在此请教各位?
Delphi中ODBC连接???????
这几天给一朋友写了一个delphi6+ODBC+ACCESS2000的小软件,在自己的电脑上配置好了ODBC后能正常运行和调试。但一装到朋友的电脑上,配置ODBC后,软件就不能通过ODBC连接上数据库,总是显示联接失败。换了几台电脑(分别装的是98、2000和XP)都一样!rn 我的电脑上装了D6和其它软件开发工具和SQLSERVER2000,朋友的机子上没装。各位有谁能帮忙啊!!郁闷中啊!!!!
关于C#连接ODBC中oracle数据库的连接字符串
关于C#连接ODBC中oracle数据库的连接字符串rnrn我在ODBC中创建了一个 数据源 TX2009 并且连接到了远程oracle服务器,rn怎么在本地 通过C#.net 连接ODBC数据源啊?rnrn请大师们帮我看看这个写法哪里错误了? 该怎么写啊?rn[code=C#]rn Conn = new SqlConnection("Provider=MSDASQL.1; Persist Security Info=False;User ID=prod; password=prod;Data Source=TX2009");rn Cmd= new SqlCommand() ;rn Cmd.Connection=Conn;rn[/code]
odbc连接sqlserver2000的问题
我通过管理工具,在数据源的系统DSN中添加对sqlserver2000的连接配置,如果点击下一步直到完成,则连接数据源显示没有问题,若配置后直接点击完成然后测试,则提示: 试图连接[Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa' 登录失败。我用户和密码绝对正确,网上的方法: 数据库身份认证改为windows,安全性改为sqlserver和windows我都做了,可还是没有效果,我想知道我点击下一步直到完成配置然后测试和配置后直接点击测试数据源有区别吗?请高手帮忙啊 谢谢大家了。。
SYBASE的ODBC连接问题?
我的SYBASE是 11.5 FOR AIX ,我在98下没有装SYBASE和OPEN CLIENT,直接用SQL SERVER 的ODBC驱动程序,也能连上。不知大家认为这样连与用SYBASE 的ODBC驱动有什么利弊?rn另外,我装了SYBASE CLIENT,但在ODBC驱动里面没有SYBASE的驱动程序啊,装了SYBASE ADAPTIVE SERVER FOR WINDOWS后才有,不知大家的是不是这样的。
ODBC连接问题
ODBC连接问题:rn 我的两台是可以Ping通,为什么我用ODBC连接时连接不通rn ODBC是用:TCP/IP, 机器名连接的rn出现提示:一般性网络连接错误!rnrn请问是什么原因.
ODBC的连接问题!
服务器端用SQLSERVER2000,WINDOWS2000!rn客户端用WINDOWS2000能连上,但是用WIN98就连不上,为什么??
odbc 连接问题.
第一次在xp下用pb,用vfp6做了格数据库.想连odbc时,提示rnhttp://218.104.39.148/test/a.bmprn我看明明有驱动在啊,怎么不能用呢.其它好多驱动都这样,下载了几个版本的mdac,odbc驱动也没用.
数据源odbc连接问题
sql数据库连接网络提示odbc没有连接,请问怎样解决!rn请详解!
ODBC的连接问题
我开发了一个统计结算系统,使用的是SQL Server数据库和Windows 2000 adv (服务器) 我的客户端是 Win98 我需要用ODBC连接 服务器上的SQL 但是我确定了 我网络是连通的情况下 使用TCP/IP 1433 连接 SQl 无法连接 始终提示的错误 与根本没有 SQL一样 (Windows 2000 做了域控制器 Win98 可以访问 共享资源 他不是域用户 )rn 在选择SQL服务器的时候 可以选择我要连接的SQL 但是 连接的时候就出了问题 无法连接 rn 我试过升级ODBC,系统覆盖 但是 问题依然存在 rn 清高手指教 如果我把系统 重装 能不能解决
pb的odbc连接问题
我使用的数据库是access,pb是8.0的,使用odbc连接,出现问题rnrn不提示连接不上,但是感觉它没有执行嵌入的sql语句rn比如说 select count(*) into :i from cars; cars是表的名字,如果任意指定一个错误的表名rn甚至没有提示表的名字不存在! 但是如果使用直接带的数据库 就是ASA sql anywhere呢,是可以执行sql语句的(它要检查table是不是合法)但是赋值还是有问题 如上面的sql语句,i的值没有办法赋进去!rnrn请帮我看看这个问题怎么解决好吗?还有就是哪里可以下载到sybase的数据库呢? 谢谢◎
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池