java 访问数据库问题,插入不了记录

2025-03-25 23:46:05
推荐回答(5个)
回答1:

方法一:
用预编译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

回答2:

用预编译PreparedStatement,这样的话sql里面的值就可以用问号代替,insert into message values(?,?,?,?)");然后用ps(ps是PreparedStatement的对象)来设置参数,ps.setString(1,"XX"),1表示第一个问号,XX表示参数的值,同理,要写四个,如果参数是Int类型的,ps.setInt(...)和上面一样的,最后ps.executeUpdate(),就ok了。

回答3:

sql所调用的方法参数类型是String形式的完全符合相应数据库的sql语句,用变量要注意翻译后的语句也要复合sql语法,你可以先看看用变量后的sql是否和你没有用变量时的sql一致

回答4:

最好把sql语句写完整
insert into message (字段) values (值)

连数据库一般是这样的:
PreparedStatement pstmt = null;
pstmt = conn.prepareStatement("insert into message (字段) values (值)");
pstmt.executeUpdate();
conn.commit();

回答5:

最好把错误贴出来