问题描述
- 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语句搞复杂了就看不懂,简单的还是懂,一复杂看起来就眼睛花了
解决方案
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 + "','";
解决方案二:
m_BORROW_DATE,'"; //获取系统时间SYSDATE
这个没有转换。可能和DB的日期格式不兼容。
方法一:查
解决方案三:
日期要格式化成字符串,且要单引号配对
解决方案四:
你的insert里有4个参数,界面上只有2个,不知你后台逻辑处理时有没有带上其他2个参数
解决方案五:
语句改成这样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 + "')";
时间: 2024-07-29 22:40:46