import java.sql.*;
public class AccessInsert{
public  static void main(String[] args){
Connection con;
Statement sql;
ResultSet rs;                                        //声明Statement对象
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
System.out.println(""+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:dragon","","");
sql=con.createStatement();
rs=sql.executeQuery("Select * FROM StudentManager");
while(rs.next()){
String name=rs.getString(1);                        //获得数据库第一列
String sex=rs.getString(2); 
System.out.println("姓名:"+name);                   //输出信息
System.out.println("性别:"+sex);
   }
String sqlStr="insert into StudentManager values (\'张强\',\'男\',\'3\',\'4\',\'5\',\'6\')";
int result = sql.executeUpdate(sqlStr);
System.out.println(result);
con.close();}
catch(SQLException el){}
}
}希望在数据库里插入数据,为什么有的时候插入成功,有的时候不成功,使用的是ACCESS。
数据库已近连接上,可以查看数据库内容。

解决方案 »

  1.   

    捕获异常后尽量打印出来。如
    catch(SQLException el){e1.printStackTrace();}还有,没用过Access,不过你可以在插入前重新获取Statement试试看,如
    Statement sql2=con.createStatement();
    int result = sql2.executeUpdate(sqlStr);
      

  2.   

    我把我以前做的给你看一下
    import  java.sql.*;
       public class Data{
       public static void main (String[] args) {
         try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            }
         catch(ClassNotFoundException e)
              { e.printStackTrace(); }
         try{
         Connection con=DriverManager.getConnection("jdbc:odbc:student","sa","sa");
         Statement stmt=con.createStatement();
         String insert1="insert into student values('王爱英','0913','女','09132546','20','计算机网络技术','82','湖北')";
         String insert2="insert into student values('刘静','0812','女','08124563','19','软件开发','78','湖北')";
         //向user表中插入记录的SQL语句
         stmt.executeUpdate(insert1);
         //Statement的executeUpdate()方法执行SQL插入,删除以及更新操作,并返回操作影响到的记录条数
         stmt.executeUpdate(insert2);
         stmt.executeUpdate("update student set 姓名='徐莉' where 学号='09114568'");
         //更新一条存在的记录,SQL语句是不区分大小写的
         ResultSet rs=stmt.executeQuery("select * from student");
         //Statement的executeQuery方法执行SQL查询语句,并返回一个ResultSet类的数据集对象
         while(rs.next())
         {System.out.print(rs.getString(1)+"  "); //getString(1)可以获得结果集中某列的某个字段的值
          System.out.print(rs.getString(2)+"  ");
          System.out.print(rs.getString(3)+"  ");
          System.out.print(rs.getString(4)+"  ");
          System.out.print(rs.getString(5)+"  ");
          System.out.print(rs.getString(6)+"  ");
          System.out.print(rs.getString(7)+"  ");
          System.out.print(rs.getString(8)+"  ");
          System.out.print("\n"); }
         rs.close();
         stmt.close();
         con.close();  }  //使用完这些结果集和对象后将其关闭,以免耗费资源
         catch(SQLException e)
        { e.printStackTrace();
        }
      }
    }我不明白楼主的记录怎么是这样的
    (\'张强\',\'男\',\'3\',\'4\',\'5\',\'6\')
    插入的记录要跟数据库中的字段值一一对应。
      

  3.   

        首先谢谢各位大大的帮助,我刚刚开始接触JAVA和数据库,捕获什么的都是跟网上COPY的代码,不好意思。自己再尝试下。
        其次,问大家几个问题,第一:插入不同的语句,一般匹配出错,错误是什么?
                             第二:ACCESS表的主键我给删了,就是在可视化见面中删的。没有主键影响大么?
           谢谢。
      

  4.   

    StudentManager
    这个表的列设置,还有建设置看下
      

  5.   

    影响会很大。
    插入的时候倒看不出来,update的时候,就不知道如何定位到要修改的记录上了。
      

  6.   

    http://hi.csdn.net/attachment/201012/28/6566277_12935265214R43.gif