JAVA写入mysql数据库出现空指针问题

时间:2021-09-07 21:44:58
错误:

Exception in thread "main" java.lang.NullPointerException
at com.mysql.jdbc.UpdatableResultSet.syncUpdate(UpdatableResultSet.java:1550)
at com.mysql.jdbc.JDBC4UpdatableResultSet.updateNString(JDBC4UpdatableResultSet.java:311)
at com.mysql.jdbc.JDBC4UpdatableResultSet.updateNString(JDBC4UpdatableResultSet.java:345)
at cn.ailab.patentmining.dao.Write.writeToDB(Write.java:45)
at cn.ailab.patentmining.core.cluster.kmeans.CoreKmeans.coreKmeans(CoreKmeans.java:68)
at cn.ailab.patentmining.test.core.execute.main(execute.java:12)




代码:

Connection con = MysqlUtil.getInstance().getConn();
if( con == null )
System.out.println(1);
Statement stmt = (Statement)con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
if( stmt == null )
System.out.println(2);

String sql = "create table clusterResult("+
"id nvarchar(30) null, "+
"n1 nvarchar(30) null, "+
"n2 nvarchar(30) null, "+
"n3 nvarchar(30) null, "+
"n4 nvarchar(30) null, "+
"n5 nvarchar(30) null, "+
"n6 nvarchar(30) null, "+
"n7 nvarchar(30) null, "+
"primary key(id));";
//System.out.println(sql);
stmt.executeUpdate(sql);

ResultSet rs = stmt.executeQuery("select id,n1,n2,n3,n4,n5,n6,n7 from clusterResult where id is null");
if( rs == null )
System.out.println(3);

String ss;
ss = "xf";
rs.updateNString("id", ss);  //出错的地方
rs.insertRow();





关于mysql链接的代码:
public class MysqlUtil {

private static MysqlUtil mysqlUtil;

private MysqlUtil() {
}

public static MysqlUtil getInstance() {
if (null == mysqlUtil) {
mysqlUtil = new MysqlUtil();
}
return mysqlUtil;
}

static {
try {
Class.forName("com.mysql.jdbc.Driver");// 加载驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

// 获取连接
public Connection getConn() {
try {
return DriverManager.getConnection(MysqlPrameters.URL, MysqlPrameters.USER,
MysqlPrameters.PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

// 释放资源
public void release(ResultSet rs, Statement st, Connection conn) {
if (null != rs) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (null != st) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (null != conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

}













代码我是修改别人的,需要增加一个把内容写入到数据库的功能,但是出错了。求大牛解答。(前面还要利用mysql链接那个类从数据库里面读入数据,是不是对写有影响的?)

8 个解决方案

#1


ResultSet rs = stmt.executeQuery("select id,n1,n2,n3,n4,n5,n6,n7 from clusterResult where id is null");
if( rs == null )
System.out.println(3); //这里应该打印出3来了吧,说明没有查询到数据,rs为null

String ss;
ss = "xf";
rs.updateNString("id", ss); //出错的地方
rs.insertRow();
//===================================//
改成:

if(rs == null){
System.out.println(3);
return;//退出程序,不在往下执行
}

试试

#2


楼主跟下程序就行了
如果是rs为null的话,肯定就执行不了rs.updateNString方法了。

if( rs == null )
System.out.println(3);

String ss;
ss = "xf";
rs.updateNString("id", ss); //出错的地方
rs.insertRow();


改成:

if( rs == null ){
    System.out.println(3);
}else{
    rs.updateNString("id", "xf"); //出错的地方
     rs.insertRow();
}

#3


select id,n1,n2,n3,n4,n5,n6,n7 from clusterResult where id is null

这个sql读出的数据是空的,不知道对下面的程序有无影响。

#4


但是rs不是为空,我加这句话

if( rs == null )
System.out.println(3);

是想看看他是否是空的,结果发现他不是空的···

#5


if (rs == null){
   return ;
}

#6


不能return啊,我想写东西进去啊

#7


不能return啊,我要写东西进数据库啊

#8


用debug调试。这么问的话也很难发现问题。

#1


ResultSet rs = stmt.executeQuery("select id,n1,n2,n3,n4,n5,n6,n7 from clusterResult where id is null");
if( rs == null )
System.out.println(3); //这里应该打印出3来了吧,说明没有查询到数据,rs为null

String ss;
ss = "xf";
rs.updateNString("id", ss); //出错的地方
rs.insertRow();
//===================================//
改成:

if(rs == null){
System.out.println(3);
return;//退出程序,不在往下执行
}

试试

#2


楼主跟下程序就行了
如果是rs为null的话,肯定就执行不了rs.updateNString方法了。

if( rs == null )
System.out.println(3);

String ss;
ss = "xf";
rs.updateNString("id", ss); //出错的地方
rs.insertRow();


改成:

if( rs == null ){
    System.out.println(3);
}else{
    rs.updateNString("id", "xf"); //出错的地方
     rs.insertRow();
}

#3


select id,n1,n2,n3,n4,n5,n6,n7 from clusterResult where id is null

这个sql读出的数据是空的,不知道对下面的程序有无影响。

#4


但是rs不是为空,我加这句话

if( rs == null )
System.out.println(3);

是想看看他是否是空的,结果发现他不是空的···

#5


if (rs == null){
   return ;
}

#6


不能return啊,我想写东西进去啊

#7


不能return啊,我要写东西进数据库啊

#8


用debug调试。这么问的话也很难发现问题。