方法一:
用预编译PreparedStatement,如下——
Connection conn = null;
PreparedStatement pstmt = null;
pstmt = conn.prepareStatement("insert into message values (?, ?, ?, ?)");
pstmt.setString(1,num);
pstmt.setString(2,nam);
pstmt.setDate(3,nowTime);
pstmt.setFloat(4,fl);
pstmt.excuteUpdate();
方法二:
另外如果用变量而非特定值来做各字段的值,应该组合sql语句,而不是像你那样直接写出"insert into message values('num','nam','nowTime','fl')"
因为你要录入的数据是变量的值,而不是变量的名字,像这样用单引号引起变量,数据库会将变量的名字作为值来进行插入。
应该如下这样——
"insert into message values ('" + num + "','" + nam + "','" + nowTime + "','" + fl + "')"
组合好后,可以在控制台打印出来看看有没有错。
所以你那句sql.executeUpdate("insert into message values('num','nam','nowTime','fl')");要改成——
String sqlUp = "insert into message values ('" + num + "','" + nam + "','" + nowTime + "','" + fl + "')";
sql.executeUpadate(sqlUp);
这种方法显然不如用PreparedStatement来的方便,而且预编译PreparedStatement的效率也比普通的Statement要好,所以建议用PreparedStatement
用预编译PreparedStatement,这样的话sql里面的值就可以用问号代替,insert into message values(?,?,?,?)");然后用ps(ps是PreparedStatement的对象)来设置参数,ps.setString(1,"XX"),1表示第一个问号,XX表示参数的值,同理,要写四个,如果参数是Int类型的,ps.setInt(...)和上面一样的,最后ps.executeUpdate(),就ok了。
sql所调用的方法参数类型是String形式的完全符合相应数据库的sql语句,用变量要注意翻译后的语句也要复合sql语法,你可以先看看用变量后的sql是否和你没有用变量时的sql一致
最好把sql语句写完整
insert into message (字段) values (值)
连数据库一般是这样的:
PreparedStatement pstmt = null;
pstmt = conn.prepareStatement("insert into message (字段) values (值)");
pstmt.executeUpdate();
conn.commit();
最好把错误贴出来