我正在尝试使用JDBC从表中获取所有列值。
这是我在主程序中编写的代码。
Class.forName( "com.mysql.jdbc.driver" );
String url = "jdbc:jtds:sqlserver://test.com/abc_1_20121225;instance=abcd";
Connection conn = DriverManager.getConnection(url,"uname","pwd");
Statement stmt = conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT table_name, column_name, data_type, data_length FROM USER_TAB_COLUMNS WHERE table_name = 'MyTable'");
while ( rs.next() ) {
String colName = rs.getString("column_name");
System.out.println(colName);
}
conn.close();
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
我在类路径中添加了jtds.jar。我收到此消息
Got an exception!
com.mysql.jdbc.driver
有人可以告诉我问题的确切原因吗?
编辑:
添加stactrace;
java.lang.ClassNotFoundException: com.mysql.jdbc.driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at schwab.TestDB.main(TestDB.java:15)
答案 0 :(得分:3)
Class.forName( "com.mysql.jdbc.driver" );
- >如果你使用的是mysql驱动程序,那就是Driver类而不是驱动程序。
String url = "jdbc:jtds:sqlserver://test.com/abc_1_20121225;instance=abcd";
--->您的网址将指向SQL Server数据库。
确保您使用的是哪个数据库。如果您使用的是MySQL,请使用MySQL Connector jar和驱动程序类com.mysql.jdbc.Driver
。
如果您使用的是MS Sql server,请使用驱动程序类:net.sourceforge.jtds.jdbc.Driver
用于jTDS Driver
或com.microsoft.sqlserver.jdbc.SQLServerDriver
用于Microsoft SQL Server 2005 JDBC驱动程序
答案 1 :(得分:3)
您正在加载错误的驱动程序。
替换它:
Class.forName("com.mysql.jdbc.driver");
使用
Class.forName("net.sourceforge.jtds.jdbc.Driver");
答案 2 :(得分:0)
我的猜测是你的类路径上没有MysQL驱动程序。但是,如果您提供完整的堆栈跟踪,您应该能够确认这一点。
但是,看起来您正在使用SQLServer数据库,所以我不确定您为什么要引用MYSQL驱动程序?
答案 3 :(得分:-1)
下载 sqljdbc4-2.0.jar 并附上您的项目。它会解决你的问题。