2 rl529014 rl529014 于 2015.07.04 10:47 提问

MFC中 SQL语句格式的的问题

(1)下面是程序中的SQL语句:
mSqlStr = "INSERT INTO BORROW (READER_ID, BOOK_ID, BORROW_DATE, B_CLERK_ID) VALUES('";
// mSqlStr = "INSERT INTO BORROW (READER_ID, BOOK_ID, B_CLERK_ID) VALUES('";
mSqlStr = mSqlStr + m_strReaderID;
mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr + m_strBookID;
mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr + "', m_BORROW_DATE,'"; //获取系统时间SYSDATE
mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr + m_strUserID;
mSqlStr = mSqlStr + "')";
图片说明
(2)下面是数据库中对应表的结构:
图片说明

(3)下面是程序运行时编译器的错误提示:
![图片说明](http://img.ask.csdn.net/upload/201507/04/1435978126_183775.png)

(4)谢谢大家了,帮帮忙吧,我是初学者,MFC里面SQL语句搞复杂了就看不懂,简单的还是懂,一复杂看起来就眼睛花了

6个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.04 12:29
已采纳
 mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr + "', m_BORROW_DATE,'"; //获取系统时间SYSDATE
mSqlStr = mSqlStr + "','";

这几行多了单引号,上面拼接出来是"','',m_BORROW_DATE'','";这个格式不对,有两个单引号,而且m_BORROW_DATE成字符串了,不是变量
改成
 mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr +  m_BORROW_DATE; //获取系统时间SYSDATE
mSqlStr = mSqlStr + "','";
frank_20080215
frank_20080215   2015.07.04 12:17

m_BORROW_DATE,'"; //获取系统时间SYSDATE
这个没有转换。可能和DB的日期格式不兼容。
方法一:查

gooddayboy
gooddayboy   2015.07.04 13:25

日期要格式化成字符串,且要单引号配对

strutce
strutce   Ds   Rxr 2015.07.04 21:21

你的insert里有4个参数,界面上只有2个,不知你后台逻辑处理时有没有带上其他2个参数

rl529014
rl529014 谢谢了,后台我处理了的,借书的话只需要两个参数就可以完成借书功能。
2 年多之前 回复
strutce
strutce   Ds   Rxr 2015.07.04 21:26

语句改成这样mSqlStr = "INSERT INTO BORROW (READER_ID, BOOK_ID, BORROW_DATE, B_CLERK_ID) VALUES('";
// mSqlStr = "INSERT INTO BORROW (READER_ID, BOOK_ID, B_CLERK_ID) VALUES('";
mSqlStr = mSqlStr + m_strReaderID;
mSqlStr = mSqlStr + "','";
mSqlStr = mSqlStr + m_strBookID;
mSqlStr = mSqlStr + "',";
mSqlStr = mSqlStr + m_BORROW_DATE; //获取系统时间SYSDATE
mSqlStr = mSqlStr + ",'";
mSqlStr = mSqlStr + m_strUserID;
mSqlStr = mSqlStr + "')";

rl529014
rl529014   2015.07.04 10:50

这个程序运行时的错误提示
图片说明

Csdn user default icon
上传中...
上传图片
插入图片