黑马程序员技术交流社区
标题:
SQL问题!ps = ct.prepareStatement(sql);报java.lang.NullPointerException
[打印本页]
作者:
陈红建
时间:
2012-8-17 10:12
标题:
SQL问题!ps = ct.prepareStatement(sql);报java.lang.NullPointerException
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SqlHelper {
// 定义需要的变量
static Connection ct = null;
static PreparedStatement ps = null;
static ResultSet rs = null;
// 连接数据库的参数
private static String url = "jdbc:mysql://127.0.0.1:3306/hotel";
private static String username = "root";
private static String password = "henry";
private static String drivername = "com.mysql.jdbc.Driver";
//static Properties pp = null;
//static FileInputStream fis = null;
public SqlHelper(){
System.out.println(" 0");
// 加载驱动,只需要一次
System.out.println(ct+" 1 0");
//加载驱动
try {
System.out.println(ct+" 2 0");
Class.forName(drivername);
System.out.println(ct+" 3 0");
try {
ct=DriverManager.getConnection(url,username,password);
System.out.println(ct+" 4 0");
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
}
}
// 如果有多个增删改[需要考虑事务]
// 比如:把一个学生,并同时更新该同学的所在班级的总人数
public void executeUpdate2(String sql[], String[][] parameters) {
try {
// 1.获得连接
//ct = getConnection();
// 用户出入的可能是多个sql语句
ct.setAutoCommit(false);
for (int i = 0; i < sql.length; i++) {
if (parameters[i] != null) {
ps = ct.prepareStatement(sql[i]);
for (int j = 0; j < parameters[i].length; j++) {
ps.setString(j + 1, parameters[i][j]);
}
ps.executeUpdate();
}
}
ct.commit();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close();
}
}
// 一个增删改
// sql格式:update 表名 set 字段名=? where 字段=?
public static void executeUpdate(String sql, String[] parameters) {
// 1.创建一个ps
//ct = getConnection();
try {
System.out.println(ct+" 5 0");
System.out.println(sql);
System.out.println(parameters[0]);
<FONT color=red>ps = ct.prepareStatement(sql);//.....这里怎么回事啊 搞什么飞机啊 </FONT>
// 给?赋值
for (int i = 0; i < parameters.length; i++) {
ps.setString(i + 1, parameters[i]);
}
// 执行
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
// 执行异常,抛出异常(好处:可以给调用的函数可以处理也可以不处理)
throw new RuntimeException(e.getMessage());
} finally {
// 关闭资源
close();
}
}
// 关闭资源的方法
public static void close() {
try {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (ct != null)
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
复制代码
作者:
陈红建
时间:
2012-8-17 13:32
申请加分
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2