Java org.postgresql.Driver在NetBeans中不工作
我正在尝试将sql数据库连接到java项目,但由于某种原因,postgresql.Driver(org.postgresql.Driver)似乎无法工作 我已确保导入所有sql方法等(java.sql.*) 我尝试运行的方法如下所示:Java org.postgresql.Driver在NetBeans中不工作,java,postgresql,jdbc,Java,Postgresql,Jdbc,我正在尝试将sql数据库连接到java项目,但由于某种原因,postgresql.Driver(org.postgresql.Driver)似乎无法工作 我已确保导入所有sql方法等(java.sql.*) 我尝试运行的方法如下所示: public boolean createUserInDB(String username, String password, boolean b, java.util.Date createdTime, java.util.Date lastLoginTime)
public boolean createUserInDB(String username, String password, boolean b, java.util.Date createdTime, java.util.Date lastLoginTime) {
try {
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(url, username, password);
Statement st = conn.createStatement();
String sql = "INSERT INTO login(brugernavn, kodeord, status, created_time, last_login_time) "
+ "VALUES(" + username + ", " + password + ", " + true + ", "
+ createdTime + ", " + lastLoginTime + ");";
st.executeUpdate(sql);
System.out.println("Query successfull");
} catch (Exception e) {
System.out.println(e.getMessage());
}
return true;
}
不要介意查询的第一行(属性是丹麦语的)
当运行这个方法时,它所做的唯一事情就是打印出“org.postgresql.Driver”,然后返回true,从而告诉用户(在GUI中)已经进行了查询
我已经下载了postgresql版本42.2.2的最新驱动程序,但仍然没有成功
我遗漏了什么?当您试图将java.util.date插入SQL日期时,您的查询结构似乎是错误的。尝试PrepareStatement而不是像下面这样的CreateStatement,它将为您的Postgres数据库处理日期。希望它能起作用
PreparedStatement st = conn.prepareStatement("insert into login (brugernavn, kodeord, status, created_time, last_login_time) values (?,?, ?, ?, ?)");
st.setString(1, username);
st.setString(2, password);
st.setBoolean(3, true);
st.setObject(4, createdTime);
st.setObject(5, lastLoginTime);
st.executeUpdate();
st.close();
当您试图将java.util.date插入SQL日期时,您的查询结构似乎是错误的。尝试PrepareStatement而不是像下面这样的CreateStatement,它将为您的Postgres数据库处理日期。希望它能起作用
PreparedStatement st = conn.prepareStatement("insert into login (brugernavn, kodeord, status, created_time, last_login_time) values (?,?, ?, ?, ?)");
st.setString(1, username);
st.setString(2, password);
st.setBoolean(3, true);
st.setObject(4, createdTime);
st.setObject(5, lastLoginTime);
st.executeUpdate();
st.close();
第一个问题:
} catch (Exception e) {
System.out.println(e.getMessage());
}
这不是卢克·伍德沃德建议的列出例外情况的正确方法。您需要使用:
} catch (Exception e) {
e.printStackTrace();
}
这将列出异常,而不仅仅是打印错误字符串
第二个问题:
我将数据库登录信息的参数命名为与我试图在方法中创建的用户相同的参数。这导致Java使用“用户名”和“密码”(createUserInDB方法参数),而不是用户数据库登录信息
感谢您对那些提出建议的人的帮助:)第一个问题:
} catch (Exception e) {
System.out.println(e.getMessage());
}
这不是卢克·伍德沃德建议的列出例外情况的正确方法。您需要使用:
} catch (Exception e) {
e.printStackTrace();
}
这将列出异常,而不仅仅是打印错误字符串
第二个问题:
我将数据库登录信息的参数命名为与我试图在方法中创建的用户相同的参数。这导致Java使用“用户名”和“密码”(createUserInDB方法参数),而不是用户数据库登录信息
感谢您对那些提出建议的人的帮助:)在每个JDBC驱动程序中使用这样的查询是错误的。在Debugger中查看查询您能更具体一点吗?我在这方面还是新手。这里没有打印“org.postgresql.Driver”。使用debbuger、查看变量等。在异常时设置断点。我几乎可以肯定,查询会给出异常,在我看来,PostgreSQL JDBC驱动程序JAR不在类路径上。您得到的异常很可能是ClassNotFoundException,它通常只包含异常消息中缺少的类的名称。(尝试在
catch
块中写入e.printStackTrace()
,以确认这一点。)堆栈溢出包含大量问题,可以帮助您添加JAR,例如。@LukeWoodward我现在做了一些更改,并与数据库建立了连接,但它说SSL如果关闭。org.postgresql.util.psqleexception:FATAL:主机“myipAddress”、用户“g”、数据库“ksevsemh”、SSL关闭没有pg_hba.conf条目如何修复此问题?在每个JDBC驱动程序中连接此类查询是错误的。在Debugger中查看查询您能更具体一点吗?我在这方面还是新手。这里没有打印“org.postgresql.Driver”。使用debbuger、查看变量等。在异常时设置断点。我几乎可以肯定,查询会给出异常,在我看来,PostgreSQL JDBC驱动程序JAR不在类路径上。您得到的异常很可能是ClassNotFoundException,它通常只包含异常消息中缺少的类的名称。(尝试在catch
块中写入e.printStackTrace()
,以确认这一点。)堆栈溢出包含大量问题,可以帮助您添加JAR,例如。@LukeWoodward我现在做了一些更改,并与数据库建立了连接,但它说SSL如果关闭。org.postgresql.util.psqleexception:FATAL:主机“myipAddress”、用户“g”、数据库“ksevsemh”没有pg_hba.conf条目,SSL关闭如何修复此问题?它仍然只打印出“org.postgresql.Driver”。wierd部分是我做了另一个项目,它能够打印出数据库上的信息并显示在我的java控制台中,它仍然可以与42.2.1驱动程序一起工作。现在,当我试图将内容插入数据库时,由于某些特殊原因,它将不允许…您可以检查您正在使用的用户ID是否具有对数据库的写入权限吗?你能不能用“e.printstacktrace()”代替System.out.println(e.getMessage());要打印完整错误..请找到问题。我已经为数据库的用户名和查询定义了相同的名称,我是用我想要创建的用户登录数据库的,而不是已经存在的用户。谢谢你的帮助:)很高兴知道这一点。如果你希望你可以接受它作为回答线程。谢谢!!它仍然只打印出“org.postgresql.Driver”。wierd部分是我做了另一个项目,它能够打印出数据库上的信息并显示在我的java控制台中,它仍然可以与42.2.1驱动程序一起工作。现在,当我试图将内容插入数据库时,由于某些特殊原因,它将不允许…您可以检查您正在使用的用户ID是否具有对数据库的写入权限吗?你能不能用“e.printstacktrace()”代替System.out.println(e.getMessage());要打印完整错误..请找到问题。我已经为数据库的用户名和查询定义了相同的名称,我是用我想要创建的用户登录数据库的,而不是已经存在的用户。谢谢你的帮助:)很高兴知道这一点。如果你希望你可以接受它作为回答线程。谢谢!!