帮忙看一下这个JDBC编程中的错误

king_3805 2012-08-21 02:23:27
// 更新表
static void upDate() {
Connection conn = getConnection();
String sql = "INSERT INTO T_SPPZ_BZ(ID,SPTXM,SPMC,GGXH,JLDW,BZQ,SCCJMC,CD,SCSJ,XGSJ,YXBZ,BZ,TBSX,CODE,QSCODE)(SELECT T_SPPZ.ID,T_SPPZ.SPTXM,T_SPPZ.GGXH,T_SPPZ.JLDW,T_SPPZ.BZQ,T_SPPZ.SCCJMC,T_SPPZ.CD,T_SPPZ.SCSJ,T_SPPZ.XGSJ,T_SPPZ.YXBZ,T_SPPZ.BZ,T_SPPZ.TBSH,T_SPPZ.CODE,T_SPPZ.QSCODE FROM WHERE T_SPPZ.SPTXM NOT IN (SELECT T_SPPZ_BZ.SPTXM FROM T_SPPZ_BZ))";
PreparedStatement sm = null;
try {
sm = conn.prepareStatement(sql);
sm.execute();
} catch (Exception e) {
e.printStackTrace();
}
}

// 执行
public static void main(String[] args) {
upDate();
System.out.println("更新成功");
}





报错信息:java.lang.NullPointerException
at Gengxin.upDate(Gengxin.java:39)
at Gengxin.main(Gengxin.java:48)
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
貌似是sql语句的问题,你先在数据库中执行下,看能否通过
「已注销」 2012-08-31
  • 打赏
  • 举报
回复
sql写错了吧 我怎么没有看见value关键字呢?
scbb 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

static void upDate() {
Connection conn = getConnection();
String sql = "INSERT INTO T_SPPZ_BZ(ID,SPTXM,SPMC,GGXH,JLDW,BZQ,SCCJMC,CD,SCSJ,XGSJ,YXBZ,BZ,TBSX,CODE,QSCODE)(SELECT T_SPPZ.ID,T_SPPZ.SPTXM……
[/Quote]

你的sql在数据库查询的地方能执行??
貌似SQL里死锁了。
dgcxyc 2012-08-28
  • 打赏
  • 举报
回复
你的getConnection()函数能贴出来看看么?conn为空吧
king_3805 2012-08-21
  • 打赏
  • 举报
回复
static void upDate() {
Connection conn = getConnection();
String sql = "INSERT INTO T_SPPZ_BZ(ID,SPTXM,SPMC,GGXH,JLDW,BZQ,SCCJMC,CD,SCSJ,XGSJ,YXBZ,BZ,TBSX,CODE,QSCODE)(SELECT T_SPPZ.ID,T_SPPZ.SPTXM,T_SPPZ.SPMC,T_SPPZ.GGXH,T_SPPZ.JLDW,T_SPPZ.BZQ,T_SPPZ.SCCJMC,T_SPPZ.CD,T_SPPZ.SCSJ,T_SPPZ.XGSJ,T_SPPZ.YXBZ,T_SPPZ.BZ,T_SPPZ.TBSX,T_SPPZ.CODE,T_SPPZ.QSCODE FROM T_SPPZ WHERE T_SPPZ.SPTXM NOT IN (SELECT T_SPPZ_BZ.SPTXM FROM T_SPPZ_BZ))";
PreparedStatement sm = null;
try {
sm = conn.prepareStatement(sql);
sm.execute();
} catch (Exception e) {
e.printStackTrace();
}
}



改成这样 依然会报错:

java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1124)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:676)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:773)
cscript 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

INSERT INTO T_SPPZ_BZ(ID,SPTXM,SPMC,GGXH,JLDW,BZQ,SCCJMC,CD,SCSJ,XGSJ,YXBZ,BZ,TBSX,CODE,QSCODE)(SELECT T_SPPZ.ID,T_SPPZ.SPTXM,T_SPPZ.GGXH,T_SPPZ.JLDW,T_SPPZ.BZQ,T_SPPZ.SCCJMC,T_SPPZ.CD,T_SPPZ.SCSJ,T_……
[/Quote]

恩 FROM 后面没有表名

不过他的错,根本就还没有执行sql就抛异常了
Bumpking 2012-08-21
  • 打赏
  • 举报
回复
prepareStatement必须要带参数吧。。。
Bumpking 2012-08-21
  • 打赏
  • 举报
回复
为什么要用prepareStatement呢?
致知Fighting 2012-08-21
  • 打赏
  • 举报
回复
conn为空
  • 打赏
  • 举报
回复
INSERT INTO T_SPPZ_BZ(ID,SPTXM,SPMC,GGXH,JLDW,BZQ,SCCJMC,CD,SCSJ,XGSJ,YXBZ,BZ,TBSX,CODE,QSCODE)(SELECT T_SPPZ.ID,T_SPPZ.SPTXM,T_SPPZ.GGXH,T_SPPZ.JLDW,T_SPPZ.BZQ,T_SPPZ.SCCJMC,T_SPPZ.CD,T_SPPZ.SCSJ,T_SPPZ.XGSJ,T_SPPZ.YXBZ,T_SPPZ.BZ,T_SPPZ.TBSH,T_SPPZ.CODE,T_SPPZ.QSCODE FROM WHERE T_SPPZ.SPTXM NOT IN (SELECT T_SPPZ_BZ.SPTXM FROM T_SPPZ_BZ))
你这语句能执行吗?
cscript 2012-08-21
  • 打赏
  • 举报
回复
看下 Connection conn = getConnection();

的 conn 对象是否为空

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧