发贴求shakaqrj 和 zaodt 两位高人

iwill_chyw 2008-04-08 10:42:15
还是那个问题:含变量的SQL语句(ACCESS)

一个表:电流表(序列号,时间,电流值)

现在作如下:
CString strID;
int nID = 1;
strID.Format("%d",nID++);
double fCurVal = 34.456;
CString strCurVal;
strCurVal.Format("%d",fCurVal);

strCurrentTime...这个已经取到毫秒级.(已经FORMAT过了)
m_pConnection->Execute("CREATE TABLE 电流(序列号 INTEGER,时间 TEXT,电流值 FLOAT)",&ra,adCmdText);

CString strSQL;
strSQL.Format( "INSERT INTO 电流(序列号,时间,电流值) VALUES(\'%s\', \'%s\' ,\'%s\')" , strID,strCurrentTime,strCurVal);
或者strSQL.Format( "INSERT INTO 电流(序列号,时间,电流值) VALUES('%s\, '%s' ,'%s')" , strID,strCurrentTime,strCurVal);
两种办法都写不进数据.

前些天这样写m_pConnection->Execute("INSERT INTO 电流(序列号,时间,电流值) VALUES(1,'2008-4-2 下午 16:08:45',25.123)",&ra,adCmdText);全部用常量代进去,这样没有问题

我现在只是试着将常量写成变量.不知道为什么还是不行
望两位高人指点.非常感谢
...全文
153 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
接分先!
内存泄漏 2008-04-08
  • 打赏
  • 举报
回复
先不要三个字段都插..一个一个字段插试试看...:

{"INSERT INTO 电流(序列号) VALUES(1)"}
{"INSERT INTO 电流(时间) VALUES('2008 April 08, Tuesday, 11:09:45:906')"}
{"INSERT INTO 电流(电流值) VALUES(34.456000)"}
shakaqrj 2008-04-08
  • 打赏
  • 举报
回复
将这个值在access中执行呢?
是不是主键冲突了
捕捉_com_error异常看报什么错
iwill_chyw 2008-04-08
  • 打赏
  • 举报
回复
加了sprintf("%s",strSQL);
并设中断;
打印如下
strSQL {"INSERT INTO 电流(序列号,时间,电流值) VALUES(1, '2008 April 08, Tuesday, 11:09:45:906' ,34.456000)"}

数据传递没有错误,可就是还没写进去
shakaqrj 2008-04-08
  • 打赏
  • 举报
回复
把strsql打印出来看看
iwill_chyw 2008-04-08
  • 打赏
  • 举报
回复
试了,还是不行
问题出在哪儿呢
内存泄漏 2008-04-08
  • 打赏
  • 举报
回复
把单引号去掉~ 插入数字为什么还要加单引号??
strSQL.Format( "INSERT INTO 电流(序列号,时间,电流值) VALUES(\'%s\', \'%s\' ,\'%s\')" , strID,strCurrentTime,strCurVal);
改成:
strSQL.Format( "INSERT INTO 电流(序列号,时间,电流值) VALUES(%d, '%s' ,%f)" , nID,strCurrentTime,fCurVal);

再不行的话,用_variant_t变量插..
shakaqrj 2008-04-08
  • 打赏
  • 举报
回复
VALUES(%s, \'%s\' ,%s)
序列号 INTEGER
电流值 FLOAT
数字类型不要加单引号
shakaqrj 2008-04-08
  • 打赏
  • 举报
回复
非常怀疑是主键冲突了
zhoujianhei 2008-04-08
  • 打赏
  • 举报
回复
将你的
strSQL {"INSERT INTO 电流(序列号,时间,电流值) VALUES(1, '2008 April 08, Tuesday, 11:09:45:906' ,34.456000)"}

这条语句在Access中运行一下,如果失败会有具体的错误信息。
zaodt 2008-04-08
  • 打赏
  • 举报
回复

楼主提供的信息太少,这样无法确定什么问题。


不过,可以这样来解决问题:

1、先把数据库端搞定;

2、再解决VC++程序端的问题。

=======

数据库端:

1、首先确认一下这个表有没有主键、唯一索引等数据完整性限制?

2、字段名改为英文

=======

VC++程序端:

1、调试查看生成的 SQL 语句是否正确?

2、捕获异常,查看返回错误。

=======

另外,你说数据没有写进去,那还有其它什么症状?

是否有错误对话框弹出?

程序是否立即退出?
zaodt 2008-04-08
  • 打赏
  • 举报
回复


高人算不上,不过楼主兄弟既然开口了,我把 QQ 留下,这个忙我帮定了!


QQ: 10489881

Email: zaodt_ms@hotmail.com
scq2099yt 2008-04-08
  • 打赏
  • 举报
回复
up
iwill_chyw 2008-04-08
  • 打赏
  • 举报
回复
一个个字段插也还是不行(使用变量).

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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