你这个表有5个字段,你只插入了四个,还使用insert into,那基本上要出错,呵呵。因为,有可能,你想的是from,插入过程中,将这个from字段,却插入到id字段了,结果正好有一个字段没有值,所以告诉你查询数目不对。
应该这么写
pstm = con.prepareStatement("insert into tblMsg(From_Col_Name, To_Col_Name, Title_Col_Name, Content_Col_Name) values(?, ?, ?, ?)");这样,sql就知道该将那个字段插入那个列中了,呵呵,其中,from_col_name代表表中的字段名。

解决方案 »

  1.   

    to yang_sun(态度决定一切,java支配世界) :
    我按照你的意思做了,但还是报错,我是这样写的:
    PreparedStatement pstm=null;
      pstm=con.prepareStatement("insert into tblMsg(from,to,title,content) values(?,?,?,?)");
      pstm.setString(1,this.from);
      pstm.setString(2,this.to);
      pstm.setString(3,this.title);
      pstm.setString(4,this.content);
      pstm.executeUpdate();
    //from,to,title,content是字段名
    错误信息:
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access  驱动程序] INSERT INTO 语句的语法错误。
    //-----------------------------------------------------------------
    同样这段语句,我只要将自动编号字段删除,程序就可以正常运行!
      

  2.   

    to  worldheart(冰力十足) :
     我该怎样去维护?
      

  3.   

    还有一个东西忘了和你说了,你那个自增的字段,非常像oracle中的sequence变量,在oracle中,先声明一个sequence变量(比如myPrimaryKey),然后,插入的时候,用这个命令PreparedStatement pstm=null;
      pstm=con.prepareStatement("insert into tblMsg(id, from,to,title,content) values(myPrimaryKey.nextVal, ?,?,?,?)");
      pstm.setString(1,this.from);
      pstm.setString(2,this.to);
      pstm.setString(3,this.title);
      pstm.setString(4,this.content);
      pstm.executeUpdate();这样,就行了,我怀疑在access数据库中,也是这么高的,你再看看,我也在给你看一下,我很少动桌面数据库的,呵呵,老了。
      

  4.   

    to yang_sun(态度决定一切,java支配世界) 
     谢谢你!可以告诉我具体的做法吗?
      

  5.   

    to yang_sun(态度决定一切,java支配世界) 
    谢谢您!
    搞定了!表tblMsg中字段名和类中的属性名相同导致的错误!
    真没想到,是这样的错误!!