Exception in thread "main" java.lang.NullPointerException怎么回事
packagecom.jdbc.dbutils;importjava.sql.Connection;importjava.sql.DriverManager;import...
package com.jdbc.dbutils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JdbcUtils {
//表示定义数据库的用户名
private final String USERNAME = "root";
//表示数据库密码
private final String PASSWORD = "admin";
//定义数据库的驱动信息
private final String DRIVER = "com.mysql.jdbc.Driver";
//定义访问数据库的地址
private final String URL = "jdbc:mysql://localhost:3306/menu";
//定义数据库的连接
private Connection connection ;
//定义sql语句的执行对象
private PreparedStatement pstmt;
//定义查询返回的结果集合
private ResultSet resultSet;
public JdbcUtils(){
try{
Class.forName(DRIVER);
System.out.println("注册驱动成功!!");
}catch (Exception e){
}
}
//定义获得数据库的链接
public Connection getConnection(){
try{
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
}catch (Exception e){
}
return connection;
}
public boolean updateByPreparedStatement(String sql,List<Object> params)
throws SQLException {
boolean flag = false;
int result = -1;//表示当用户执行添加删除和修改的时候所影响数据库的行数
pstmt = connection.prepareStatement(sql);
int index = 1;
if(params != null && !params.isEmpty()){
for(int i = 0;i < params.size();i++){
pstmt.setObject(index++,params.get(i));
}
}
result = pstmt.executeUpdate();
flag = result > 0 ? true : false;
return flag;
}
public static void main(String[] args){
JdbcUtils jdbcUtils = new JdbcUtils();
jdbcUtils.getConnection();
String sql = "insert into userinfo(username,pswd) values(?,?)";
List<Object> params = new ArrayList<Object>();
params.add("jack");
params.add("admin");
try {
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
at com.jdbc.dbutils.JdbcUtils.updateByPreparedStatement(JdbcUtils.java:50)
at com.jdbc.dbutils.JdbcUtils.main(JdbcUtils.java:70)
50行:pstmt = connection.prepareStatement(sql);
70行:boolean flag = jdbcUtils.updateByPreparedStatement(sql, params); 展开
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class JdbcUtils {
//表示定义数据库的用户名
private final String USERNAME = "root";
//表示数据库密码
private final String PASSWORD = "admin";
//定义数据库的驱动信息
private final String DRIVER = "com.mysql.jdbc.Driver";
//定义访问数据库的地址
private final String URL = "jdbc:mysql://localhost:3306/menu";
//定义数据库的连接
private Connection connection ;
//定义sql语句的执行对象
private PreparedStatement pstmt;
//定义查询返回的结果集合
private ResultSet resultSet;
public JdbcUtils(){
try{
Class.forName(DRIVER);
System.out.println("注册驱动成功!!");
}catch (Exception e){
}
}
//定义获得数据库的链接
public Connection getConnection(){
try{
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
}catch (Exception e){
}
return connection;
}
public boolean updateByPreparedStatement(String sql,List<Object> params)
throws SQLException {
boolean flag = false;
int result = -1;//表示当用户执行添加删除和修改的时候所影响数据库的行数
pstmt = connection.prepareStatement(sql);
int index = 1;
if(params != null && !params.isEmpty()){
for(int i = 0;i < params.size();i++){
pstmt.setObject(index++,params.get(i));
}
}
result = pstmt.executeUpdate();
flag = result > 0 ? true : false;
return flag;
}
public static void main(String[] args){
JdbcUtils jdbcUtils = new JdbcUtils();
jdbcUtils.getConnection();
String sql = "insert into userinfo(username,pswd) values(?,?)";
List<Object> params = new ArrayList<Object>();
params.add("jack");
params.add("admin");
try {
boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
System.out.println(flag);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
at com.jdbc.dbutils.JdbcUtils.updateByPreparedStatement(JdbcUtils.java:50)
at com.jdbc.dbutils.JdbcUtils.main(JdbcUtils.java:70)
50行:pstmt = connection.prepareStatement(sql);
70行:boolean flag = jdbcUtils.updateByPreparedStatement(sql, params); 展开
3个回答
展开全部
你确定你连接数据库的部分正确吗?会不会返回的Connection为null?
你在主方法中测试一下:
Connection conn=jdbcUtils.getConnection();
if(conn==null).........//这里写个提示信息,表示连接为空。
你在主方法中测试一下:
Connection conn=jdbcUtils.getConnection();
if(conn==null).........//这里写个提示信息,表示连接为空。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以先把50行标注一下吗?这样找实在太累了..
更多追问追答
追问
50行:pstmt = connection.prepareStatement(sql);
70行:boolean flag = jdbcUtils.updateByPreparedStatement(sql, params);
追答
好吧,肯定是connection为空
大兄弟,你这个connection现在还是空呢,应该先调用getConnection()这个方法才执行才行哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询