1

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)
4

4 に答える 4

3

Class.forName( "com.mysql.jdbc.driver" );

-> mysqlドライバーを使用している場合は、ドライバーではなくドライバークラスです。

String url = "jdbc:jtds:sqlserver://test.com/abc_1_20121225;instance=abcd";

--->URLはSQLServerデータベースを指します。

使用しているデータベースを確認してください。MySQLを使用している場合は、MySQLConnectorjarとドライバークラスを使用しますcom.mysql.jdbc.Driver

MS Sqlサーバーを使用している場合は、ドライバークラスを使用します:Microsoft SQL Server2005JDBCドライバーnet.sourceforge.jtds.jdbc.DriverjTDS DriverORの場合com.microsoft.sqlserver.jdbc.SQLServerDriver

于 2013-01-07T09:41:07.330 に答える
3

間違ったドライバをロードしています。

これを置き換えます:

Class.forName("com.mysql.jdbc.driver");

Class.forName("net.sourceforge.jtds.jdbc.Driver");
于 2013-01-07T09:41:26.897 に答える
0

私の推測では、クラスパスにMysQLドライバーがありません。ただし、完全なスタックトレースを提供すると、これを確認できるはずです。

ただし、SQLServerデータベースを使用しているように見えるので、MYSQLドライバーを参照している理由がわかりません。

于 2013-01-07T09:39:42.417 に答える
-1

sqljdbc4-2.0.jarをダウンロードして、プロジェクトに添付します。それはあなたの問題を解決します。

于 2013-01-07T09:48:26.370 に答える