2

学校で基本的なSQLテストの勉強をしようとしていますが、残念ながら、使用する予定のクラスをPCのプロジェクトにコピーしたところ、次のエラーが発生しました。

java.sql.SQLException:[Microsoft] [ODBCドライバーマネージャー]データソース名が見つからず、デフォルトのドライバーが指定されていません

package Question1;

// Your name, Q 1
import java.sql.*;
import java.io.*;
import javax.swing.*;

public class GreenWood
{
 // Set up database connection
   private static final String DATABASE_FILE_NAME = "WoodDB.mdb";
   private static final String DRIVER = "jdbc:odbc:DRIVER=" +
   "{Microsoft Access Driver (*.mdb)};" +
   "DBQ=" + new File (DATABASE_FILE_NAME).getAbsolutePath ();
  static
  {
     try
     {
        Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
     }
         catch (ClassNotFoundException e)
        {
           System.out.println ("Class not found");
           e.printStackTrace ();
        }
  }


  private Connection dbcon;
  private BufferedReader keyb = new BufferedReader (new InputStreamReader (System.in));

   public GreenWood ()
  {
     System.out.println ("WoodDB Connection");
     try
     {
        dbcon = DriverManager.getConnection (DRIVER);
        Statement stmt = dbcon.createStatement ();
        System.out.println ("Connection successful\n");

        char choice = ' ';
        do
        {

         //Prints options for user input

           choice = keyb.readLine ().toUpperCase ().charAt (0);
           System.out.println (" ");
           switch (choice)
           {
             //calls query methods based on user input

           }
        }
        while (choice != 'X');
        dbcon.close ();
        System.out.println ("Done");
        Thread.sleep (1000);
        System.exit (0);
     } // try
         catch (Exception e)
        {
        // process exceptions here
           System.out.println ("Connection unsuccessful");
           e.printStackTrace ();
           System.out.println (e.toString ());
        }
  } // HoutSoorte constructor

  //Query Methods
  //Main creates new instance of GreenWood

私のWoodDBデータベースはルートプロジェクトディレクトリにあります。

トラブルシューティングを行いましたが、問題はドライバーの場所のURLにあると思います。

dbcon = DriverManager.getConnection (DRIVER);

ドライバーは:

private static final String DRIVER = "jdbc:odbc:DRIVER=" +
   "{Microsoft Access Driver (*.mdb)};" +
   "DBQ=" + new File (DATABASE_FILE_NAME).getAbsolutePath ();

約1時間の調査の後、私はまだ私と同じように混乱しています。誰かがこのナブプログラマー(私)を赤ちゃんの言葉で問題を説明し、私がそれをどのように修正できるかを説明することができれば、それはありがたいです。

4

3 に答える 3

3

32ビットJVMを使用してみてください。64ビットJVMから接続しようとすると、同じエラーメッセージが表示されます。

于 2012-04-30T15:19:15.990 に答える
3

動作する場合は、次のことを試してください。

64ビットシステムの場合は、C:\ windows\sysWOW64に移動します。32ビットシステムの場合、Goto:C:\ windows

odbcad32.exeという実行可能ファイルがあります。

このexeを管理者として実行して、MicrosoftOfficeなどに付属するすべてのODBCドライバーにアクセスします。

my_data_sourceという名前のデータソースを作成し、接続文字列を次のように記述します。

接続con=DriverManager.getConnection( "jdbc:odbc:my_data_source");

上記の解決策は私の場合はうまくいきました。

詳細については、「 MSAccessを使用したJavaConnectivity 」を参照 してください。

于 2013-06-29T15:13:26.577 に答える
0

DATABASE_FILEのフルパス名を使用するか、ソースディレクトリにコピーしてみてください。

于 2012-04-30T14:52:32.107 に答える