mfc使用ODBC API 连接到数据库,SQLExecDirect()执行的语句返回值为-1

womingchengyou_BUG 2018-04-17 08:58:23

BOOL MYODBCAPI::ExecSQL(CString sqlCmd)
{
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLExecDirect(hstmt, (SQLCHAR*)(LPCTSTR)sqlCmd,sqlCmd.GetLength());
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
msg = "执行数据语句成功";
return TRUE;
}
else
{
msg = "执行数据库语句失败";
return FALSE;
}
}
else
{
msg = "分配语句句柄失败";
return FALSE;
}
}

数据库是连接成功的 但是语句就是执行失败
一开始以为是数据库语句错误 但是去SQL里面测试 数据库语句是没问题的
数据库版本是 SQL2008R2的
...全文
492 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
womingchengyou_BUG 2018-04-17
  • 打赏
  • 举报
回复
引用 1 楼 qq_39850605 的回复:
我也碰到过,使用odbc,编译没有问题,库文件、头文件都正确包含,初始化语句返回-1, 也试过occi,可以正常连接,插入也可以,查询只能查int类型的字段,查varchar2 类型的字段就会崩掉,查阅过好多资料,也没有找到解决办法,在有的电脑上就可以。所以我果断换了一个数据库, sqlite3,小巧方便,功能强大,语句绝大部分和oracle是一样的,当然我是对于做毕业设计来说的,至于你要干什么用就要考虑自己的了,应该会有解决办法的,我不想找了。
谢谢你的回复,我找到原因了,是因为我的ODBC数据源出现了问题,这个是我在使用 ODBC类的使时候发现的 原因是之前我使用的驱动是SQL的 后来应该是因为我重新添加了一个同名的数据源 但是使用的驱动是Access的,所以数据库语句无效
@风轻云淡_ 2018-04-17
  • 打赏
  • 举报
回复
我也碰到过,使用odbc,编译没有问题,库文件、头文件都正确包含,初始化语句返回-1, 也试过occi,可以正常连接,插入也可以,查询只能查int类型的字段,查varchar2 类型的字段就会崩掉,查阅过好多资料,也没有找到解决办法,在有的电脑上就可以。所以我果断换了一个数据库, sqlite3,小巧方便,功能强大,语句绝大部分和oracle是一样的,当然我是对于做毕业设计来说的,至于你要干什么用就要考虑自己的了,应该会有解决办法的,我不想找了。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧