Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
String url = "jdbc:odbc:message_DSN"; // message_DSN 为你的用户数据源名称; 
String user = ""; 
String password = ""; // 用户名和密码在此都设为空; 
Connection conn = DriverManager.getConnection(url, user, password); 
Statement stmt = conn.createStatement(); 
String sql3 = "insert into message values(?,?,?)"; 
PreparedStatement psmt=conn.prepareCall(sql3); 
psmt.clearParameters(); 
psmt.setString(1,"1"); 
psmt.setString(2,"dong"); 
psmt.setString(3,"插进去了么?????"); 
int i= psmt.executeUpdate(); 
拿这个例子说下好吗?昨天有个朋友说这么写不太好那一共有多少种写法呢?各自有什么利弊

解决方案 »

  1.   

    insert into values()
    insert into select ... union select ...
    insert into a select * from b
      

  2.   

    insert into table(a,b,c) value(1,2,3)
    insert into table  value(1,2,3)
    insert into table select a,b,c from table1
      

  3.   

    根本的话,都是insert用法。没有利避,只看需要。
    你仔细分析一下,就会发现,还是标准的insertinsert into 表名 [表列]value[对应值]要是变化就在前面的表列和对应值上,怎么用表列,可省略,可以动态的取得。对应值的获取方法就更多了,可以动态的输入,比如一些存储过程。还可以从别的表中取得,也可以固定时,还可以用一些函数,等等。查根本还是那样。
    不知我说的对不对?
      

  4.   

    我想在一个字段里让数据库自动生成时间,把数据库的默认之已经改成了getdate();我在数据库里怎么写啊?
    比如这个:insert into table(a,b,c) value(1,2,3) 
    我想在第二个字段不插入东西,让数据库加载默认直(getdate())
      

  5.   

    --若b需要使用默认值,如下即可:
    insert into table(a,c) value(1,3)