版本 MySQL 4.0
JDK 1.4
MySQL-connect-jdk 1.0.8
连接代码如下: private String driverName = "com.mysql.jdbc.Driver";
private String connectString = "jdbc:mysql://localhost:3306/dbname?user=root&password=&useUnicode=true&characterEncoding=8859_1";
private Statement stmt;Class.forName(driverName);
Connection conn = DriverManager.getConnection(connectString); stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
报错信息:
connect to database is successful!java.lang.NullPointerException
JDK 1.4
MySQL-connect-jdk 1.0.8
连接代码如下: private String driverName = "com.mysql.jdbc.Driver";
private String connectString = "jdbc:mysql://localhost:3306/dbname?user=root&password=&useUnicode=true&characterEncoding=8859_1";
private Statement stmt;Class.forName(driverName);
Connection conn = DriverManager.getConnection(connectString); stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
报错信息:
connect to database is successful!java.lang.NullPointerException
就是查询时stmt = conn.createStatement();出问题
这句你放在哪里打印的?
应该就是con==null导致的
import java.sql.*;
import java.lang.String;public class connDBTest
{ private String driverName = "com.mysql.jdbc.Driver";
private String connectString = "jdbc:mysql://localhost:3306/dbname?user=root&password=&useUnicode=true&characterEncoding=8859_1";
private static Connection conn = null;
private Statement stmt;
public connDBTest()
{ try
{
Class.forName(driverName);
Connection conn = DriverManager.getConnection(connectString);
if(!conn.isClosed())
System.out.println("connect to database is successful!");
}
catch(ClassNotFoundException e)
{
System.out.println("error, can not find the driver!");
e.printStackTrace();
}
catch(SQLException e)
{
System.out.println("error, can not find the driver!");
e.printStackTrace();
}
}
public ResultSet executeQuery(String sql) throws SQLException
{
ResultSet rs = null;
System.out.println(sql);
try
{
System.out.println("1");
stmt = conn.prepareStatement(sql);
System.out.println("2");
rs = stmt.executeQuery();
System.out.println("3"); }
catch (SQLException ex)
{
System.out.println("error, the query is not successful!");
System.out.println("connDB.executeQuery:"+ex.getMessage());
}
return rs;
}
public void close() throws SQLException
{
if(conn != null) conn.close();
if(stmt != null) stmt.close();
} public static void main(String args[])
{
ConnectDB connDB = new ConnectDB(); try{
ResultSet rs = connDB.executeQuery("SELECT * from temptable"); while(rs.next())
{ System.out.println(rs.getString("FileName"));
}
System.out.println("over");
}catch(Exception e){
System.out.println(e.toString());
}finally {
System.out.println("Closing connections...");
try {
conn.close();
} catch (SQLException e) {
System.out.println("Can't close connection.");
}
}
}
}
conn = DriverManager.getConnection(connectString);
你要不把全部的测试代码放在同一个mothod(方法)内
要不把conn变成一个field更好的方案是做一个conn管理类(连接池)
没有再改变过,始终为null;
Connection conn = DriverManager.getConnection(connectString);
在构造时连接成功!但此conn作用域只在构造函数内
main函数一个地方写错了 应该为
connDBTest connDB = new connDBTest();
System.out.println(connDB.toString());但是 仍然报空指针 connect to database is successful!
connDBTest@1e0be38
SELECT * from temptable
1
java.lang.NullPointerException
Closing connections...
java.lang.NullPointerException
at connDBTest.main(connDBTest.java:116)
Exception in thread "main"
如果把conn = DriverManager.getConnection(connectString);加在查询方法里就好了
谢了 结贴