正在做课程设计,做了图书管理的...因为才学java不久所以是网上找的代码,源代码中用的是SQLServer的数据库,作为一个学java的就必然想到了MySQL,所以重写了数据库的驱动改成了mysql,问题也接踵而至:
问题一:
sqlserver中的这条语句:"SELECT balance=datediff(S,Obotime,getdate()),Ouid,ObRenttime FROM b_Outbooks");
和mysql的  datediff的用法不一样,不知道该如何解决...问题二:
数据库中图书的ID是自增长的,然后在添加新书信息的时候图书ID是不填的,问题又来了...dbc.executeUpdate("INSERT b_Books VALUES ('" + txtName.getText() +
                                  "','" + txtPreview.getText() + "','" +
                                  (String) cbSort.getSelectedItem() + "','" +
                                  txtPublisher.getText() + "'," +
                                  Integer.parseInt(txtSum.getText()) + "," +
                                  Integer.parseInt(txtPrice.getText())+ ",'" +
                                  txtAuthor.getText() + "',DEFAULT)"))少了第一列ID的插入,不知道怎么才能在程序中进行修改,数据库里ID是自增长的,不用填的,程序中不填又会报
Incorrect integer value :"for column 'id' at row 1
请高手们不惜敲几下键盘帮忙解决下

解决方案 »

  1.   

    这个就是自增字段哇   自增字段比如你的那个ID是不需要insert的  就是你在数据库建表的时候 需要设置一下就好了比如这样,ID MEDIUMINT NOT NULL AUTO_INCREMENT,
      

  2.   

    Incorrect integer value :"for column 'id' at row 1 这个的问题是因为类型不匹配  或者 还有一个可能是数据库第一个字段的大小设置得太小了
      

  3.   

    少了一列当然加上去,你可以看看MYSQL 的手册, 可能是ALTER TABLE [TABLENAME] ADD COLUNM [COLUNMNAME],但是往往加在最后的,但这些都是没多大关系的,你可以相应改一下插入顺序,其次是不是AUTO-INCREAMENT并不重要,你做好PRIMARY KEY NOT NULL就好了,另外一点,最好把那串SQL拿出来放变量里,不过纯属个人洗好,给个建议而已
      

  4.   

    INSERT b_Books VALUES (111,2222,333,444...)
    这个语句是默认插所有字段的,既然你第一个ID已经是自动增长的了,那么就不要往里面插
    改用
    insert into b_Books (字段1,字段2,字段3...) values(值1,值2,值3....)
      

  5.   


    dbc.executeUpdate("INSERT b_Books ('bname','bpreview','bsort','bpublisher','bsum','bprice','bauthor')VALUES ('" + txtName.getText() +
                                      "','" + txtPreview.getText() + "','" +
                                      (String) cbSort.getSelectedItem() + "','" +
                                      txtPublisher.getText() + "'," +
                                      Integer.parseInt(txtSum.getText()) + "," +
                                      Integer.parseInt(txtPrice.getText())+ ",'" +
                                      txtAuthor.getText() + "',DEFAULT)"))我改成这样以后又报错了...
    you have an error in your SQL syntax;chexk the manual that corresponds to your MYSQL server version for the right syntax to use near''bname','bpreview','bsort','bpublisher','bsum','bprice','bauthor')VALUES ('乱码' at line 1
    求助啊~还有2楼3楼可能理解错了。我的数据库那边自增长没问题,问题出在程序里,4楼给了答案,就是又出了点小问题。希望能解决的高手帮个忙
    还有第一个问题~
      

  6.   

    dbc.executeUpdate("INSERT b_Books (bname,bpreview,bsort,bpublisher,bsum,bprice,bauthor)VALUES ('" + txtName.getText() +
                                      "','" + txtPreview.getText() + "','" +
                                      (String) cbSort.getSelectedItem() + "','" +
                                      txtPublisher.getText() + "'," +
                                      Integer.parseInt(txtSum.getText()) + "," +
                                      Integer.parseInt(txtPrice.getText())+ ",'" +
                                      txtAuthor.getText() + "',DEFAULT)")改成这样之后他报错column count doesn't match value count at row 1
    我网上查了下说是SQL语句里列的数目和后面的值的数目不一致。
    但我是制定的字段名插入值,应该不会有不一致的错误啊,第一列ID字段我设置的是主键和自增长...
    不知道是什么问题了..
      

  7.   

    dbc.executeUpdate(.....)
    这里面的语句打印出来,就很容易看出来错,实在不行复制到sql界面调错最方便
      

  8.   

    谢谢了~~
    这个问题终于解决了还有第一个datediff函数的问题....
    sqlserver语句:"SELECT balance=datediff(S,Obotime,getdate()),Ouid,ObRenttime FROM b_Outbooks");
    换成mysql的话参数不对....不知道该如何修改了....求教
      

  9.   

    datediff这个参数不懂,你直接说需求比较好点...就像你来java区贴一大堆c代码然后求java怎么写还不如直接出原题=。=
      

  10.   

    -.-
    求数据库里一个日期字段和当前日期的时间差,
    貌似mysql里也是用datediff的
      

  11.   

    select unix_timestamp(字段) from 表名查出来的是毫秒
      

  12.   

    select DateDIFF(now(),字段) from 表;查天数