请问大家 我在更新数据库时期中id为int类型,在sql中怎么写?如下有错误么?
运行提示是数据库有一条受影响,但是结果却是没有更新,数据还和以前一样先谢谢大家/******************************修改大类别**************************************/
public static int bigTypeModify(int id, String bigname, String introduce) {
Connection conn = null;
PreparedStatement pstmt = null;
int flag = -1;
String sql = "";
try {
conn = DB.getConn();
sql = "update tb_bigtype set ? = '"+bigname+"',? = '"+introduce+"'where ? = id ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "bigtypename");
pstmt.setString(2, "introduce");
pstmt.setInt(3, id);
flag = pstmt.executeUpdate();
System.out.println(sql); //
System.out.println(flag); //
} catch(SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return flag;
}
运行提示是数据库有一条受影响,但是结果却是没有更新,数据还和以前一样先谢谢大家/******************************修改大类别**************************************/
public static int bigTypeModify(int id, String bigname, String introduce) {
Connection conn = null;
PreparedStatement pstmt = null;
int flag = -1;
String sql = "";
try {
conn = DB.getConn();
sql = "update tb_bigtype set ? = '"+bigname+"',? = '"+introduce+"'where ? = id ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "bigtypename");
pstmt.setString(2, "introduce");
pstmt.setInt(3, id);
flag = pstmt.executeUpdate();
System.out.println(sql); //
System.out.println(flag); //
} catch(SQLException e) {
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
return flag;
}
当你是DDL语句的时候必须要考虑到事务,
也就是说,update,delete,insert
因为jdbc默认是关闭事务的,
在这些操作之前,你应该开启,事务,然后操完了之后要在commit!
否则的话就会出现你上面说说的情况!
还有,你的Sql语句写的很烂!
细节很重要!
sql = "update tb_bigtype set ? = '"+bigname+"',? = '"+introduce+"'where ? = id ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "bigtypename");
pstmt.setString(2, "introduce");
pstmt.setInt(3, id);
既然字段名都写死了,不写成把值当问号,而把字段名当问号?
sql = "update tb_bigtype set bigtypename = ?,introduce=? where id =? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, bigname);
pstmt.setString(2, introduce);
pstmt.setInt(3, id);
数据库没显示?要commit的 数据库才显示的