所以我试图从java连接到我的数据库,我在Eclipse工作,我在网上看了一个教程,一切似乎都工作得很好!!但是当我想连接另一个时appache server上的数据库..程序开始运行..但几分钟没有任何反应..然后我得到Null Pointer Exception消息.. 并在行:st = con.createStatement(); 这是代码:
package database_console;
import java.sql.*
public class DBConnect {
private Connection con;
private Statement st;
private ResultSet rs;
public DBConnect(){
try {
Class.forName("com.mysql.jdbc.Driver");
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:80/mysql", "root", "admin");
st = con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// to retrieve the results and print them out
public void getData(){
String query = "select DB from db";
try {
rs = st.executeQuery(query);
System.out.print("Records from Database");
while (rs.next()){
String DB = rs.getString("DB");
//String name = rs.getString("name");
//String password = rs.getString("password");
//int id = rs.getInt("id");
//System.out.print("ID: "+id+" Name: "+name+" password: "+password+"");
System.out.print("DB: " + DB );
}
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我稍后从main()为的另一个类调用getData()函数:
package database_console;
import java.io.IOException;
public class Main {
public static void main(String[] args){
DBConnect connect = new DBConnect();
connect.getData();
}
你可以帮我弄清楚我的代码有什么问题吗?
感谢。
答案 0 :(得分:1)
我注意到你正在尝试连接到端口80,即" jdbc:mysql:// localhost:80 / mysql"。对于mysql来说这是非常不寻常的。端口80是标准的http端口。 mysql的标准端口是3306.很确定这是你的问题。
答案 1 :(得分:0)
创建Connection对象时,控制台中必须有异常,导致Statement对象未初始化,并且当您尝试从Statement对象创建ResultSet对象时导致NullPointException
原因应该是您使用80作为端口,而MySQL的默认端口是3306。在这个原因中,您无法创建Connection对象。
答案 2 :(得分:0)
检查您的连接详情 - hostUrl,username&密码。