我在插入一条记录的时候老报23000这个错,但我确定不能为空的值一定不为空。
大概代码如下
绑定参数
给绑定的参数赋值
sStatem.Format(L"Insert into purchase values(?,?,?,?,?,?,?,?,?)");
sqlret = SQLExecDirect(h_sqlSTMT, sStatem.GetBuffer(), SQL_NTS);
就算只插入一条只有第一个字段(非空),也报这个错,但我确定在绑定的时候没有出错,变量里面也有值

解决方案 »

  1.   

    就一个主键。SQL语句我在执行excete前打印过,没什么特殊符号呢。
      

  2.   

    打开你的MYSQL的普通日志功能,然后检查一下你的程序提交的是什么SQL语句。
      

  3.   

    log_bin=on 
    log=mylog.log
    log_output=file 我在配置文件中加了上面的,还是打不开呢?
    我是用5.0的。
      

  4.   

    找到错误了,原来写入数据库的时候变成:
    Insert into purchase values(9.50070000000000000e+004,_latin1'0000-00-00',_latin1'0000-00-00',1.71861770000000000e+007,1.21211200000000000e+006,21,'454','fdgs','jfgh')
    mysql应该是不支持科学记数法。有没有好点的解决办法?不改变数据库类型的。
      

  5.   

    不对,支持9.50070000000000000e+004 这样写,另外的语句这样写成功了。
    数据库定义如下,麻烦帮看一下:
    +---------------+-------------+------+-----+---------+-------+
    | Field         | Type        | Null | Key | Default | Extra |
    +---------------+-------------+------+-----+---------+-------+
    | no            | double      | NO   | PRI | 0       |       |
    | order_date    | date        | YES  |     | NULL    |       |
    | cod_date      | date        | YES  |     | NULL    |       |
    | supplier_id   | double      | YES  |     | NULL    |       |
    | product_id    | double      | YES  |     | NULL    |       |
    | quantity      | int(11)     | YES  |     | NULL    |       |
    | packing       | varchar(50) | YES  |     | NULL    |       |
    | other_demands | varchar(50) | YES  |     | NULL    |       |
    | memo          | varchar(50) | YES  |     | NULL    |       |
    +---------------+-------------+------+-----+---------+-------+