Java Netbeans数据库连接错误
我是Netbeans的新手。我正试图通过Netbeans和mysql workbench作为我的数据库来创建一个关于存储管理的新项目。但我在连接数据库时遇到了问题。我的代码如下:Java Netbeans数据库连接错误,java,netbeans,netbeans-7,mysql-workbench,Java,Netbeans,Netbeans 7,Mysql Workbench,我是Netbeans的新手。我正试图通过Netbeans和mysql workbench作为我的数据库来创建一个关于存储管理的新项目。但我在连接数据库时遇到了问题。我的代码如下: enter code here package MyDb.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.logging.Level;
enter code here
package MyDb.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DbConnection {
private static Connection conn=null;
static{
Throwable e = null;
try {
Class.forName("com.mysql.jdbc.Driver");
try {
System.out.println("Connecting Database!!");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/GanpatiDB","root","");
System.out.println("");
} catch (SQLException ex) {
throw new RuntimeException("Cannot connect the database!", e);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE, null, e);
System.out.println("Terminating application...check database");
System.exit(0);
}
finally {
System.out.println("Closing the connection.");
}
}
private static Object connection;
public DbConnection(){
}
public static Connection getConnection(){
return conn;
}
public static void closeConnection() throws Exception{
conn.close();
}
}
调试项目后,控制台会给出如下结果
生成成功(总时间:0秒)
但它仍然显示出以下一些错误:
2014年1月14日下午1:47:13 MyDb.utils.DbConnection
正在终止应用程序…检查数据库
严重:空
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:拒绝用户“@'localhost”访问数据库“GanpatiDB[root on Default schema]”
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:409)
位于com.mysql.jdbc.Util.getInstance(Util.java:384)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:3566)
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)上
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)上
位于com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4004)
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:774)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:49)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:409)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
位于java.sql.DriverManager.getConnection(DriverManager.java:571)
位于java.sql.DriverManager.getConnection(DriverManager.java:233)
在MyDb.utils.DbConnection.(DbConnection.java:20)
位于desktopapplication1.NewJFrame。(NewJFrame.java:27)
在desktopapplication1.NewJFrame$2.run(NewJFrame.java:199)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
在java.awt.EventQueue.access$200(EventQueue.java:103)
位于java.awt.EventQueue$3.run(EventQueue.java:694)
在java.awt.EventQueue$3.run(EventQueue.java:692)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
构建显示为成功有一个很好的理由:您正在捕获实际错误并自己生成日志语句:
catch(ClassNotFoundException ex){
Logger.getLogger(DbConnection.class.getName()).log(Level.SEVERE,null,e);
System.out.println(“终止应用程序…检查数据库”);
系统。退出(0);
}
因为它正在捕获错误,所以代码按预期执行(如果希望它显示为失败,则应将System.exit
的参数更改为-1)
您捕获的错误是一个
ClassNotFoundException
,Java似乎无法找到您试图使用Class.forName(“com.MySQL.jdbc.driver”)查找的MySQL驱动程序代码>。如果您查看日志,根本没有提到驱动程序,这似乎支持了这一理论。记住,与数据库的任何连接都不是IDE
的业务,IDE只是一个编码和编译平台,这将不会编译代码本身。能否请您指导我获取权限由于错误提示MySQLSyntaxErrorException
,请检查connection的语法以使用以下内容:谢谢,我的数据库连接已完成,但现在发生另一个错误:“线程中的异常”AWT-EventQueue-0“java.lang.ExceptionInInitializeError位于desktopapplication1.NewJFrame。(NewJFrame.java:27)位于desktopapplication1.NewJFrame$2.run(NewJFrame.java:199)”很抱歉,这对我来说还不够。在我看来,JFrame的init方法中有一个错误的事件侦听器或其他内容。
Jan 14, 2014 1:47:13 PM MyDb.utils.DbConnection <clinit>
Terminating application...check database
SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'GanpatiDB[root on Default schema]'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4004)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at MyDb.utils.DbConnection.<clinit>(DbConnection.java:20)
at desktopapplication1.NewJFrame.<init>(NewJFrame.java:27)
at desktopapplication1.NewJFrame$2.run(NewJFrame.java:199)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)