web-dev-qa-db-ja.com

MS SQL Server 2008 ExpressでMS JDBCドライバーを使用するにはどうすればよいですか?

私の構成:

  • windows XP SP3
  • JDBC 2005
  • MS SQL Server 2008 Express、ポート1433のTCP/IP経由で公開
  • クラスパスのsqljdbc.jar

私は試した:

try {
    Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    con = DriverManager.getConnection("jdbc:Microsoft:sqlserver://localhost:1433/SQLEXPRESS2008;databaseName=Test;selectMethod=cursor", "sa", "");
}
catch (Exception e) {
    e.printStackTrace();
}

ただし、常に例外がスローされます。

Java.sql.SQLException: No suitable driver

次のURLも試しました。

localhost:1433/SQLEXPRESS2008

localhost/SQLEXPRESS2008

localhost

同じ結果。何か助けは?

13
StoneHeart

URLが間違っています。

「JDBC 2005」の意味がわかりません。 Microsoftのサイトを調べたところ、 Microsoft SQL Server JDBC Driver 2. という名前のものが見つかりました。 あなたはそれを望んでいるでしょう-それは多くの修正といくつかのパフォーマンスの改善を含んでいます。 [編集:おそらく最新のドライバーが必要になるでしょう。 2012年3月現在、Microsoftの最新のJDBCドライバーは JDBC 4.0] です。

リリースノートを確認してください。このドライバーには、次のものが必要です。

URL:  jdbc:sqlserver://server:port;DatabaseName=dbname
Class name: com.Microsoft.sqlserver.jdbc.SQLServerDriver

クラス名は正しいようですが、URLが間違っています。

Microsoftは、JDBCドライバーの最初のリリース後にクラス名とURLを変更しました。使用しているURLは、MicrosoftのオリジナルのJDBCドライバーに対応しており、MSが「SQL Server 2000バージョン」と呼んでいます。ただし、そのドライバーは別のクラス名を使用します。

以降のすべてのドライバーについて、URLはここにある形式に変更されました。

これは、JDBCドライバーのリリースノートにあります。

29
Cheeso

databaseName値が正しい場合は、これを使用します:DriverManger.getconnection("jdbc:sqlserver://ServerIp:1433;user=myuser;password=mypassword;databaseName=databaseName;")

3
Mritunjay
  1. MicrosoftのWebサイトから最新のJDBCドライバー(つまり_sqljdbc4.0_)をダウンロードします。
  2. 次のようにプログラムを記述します。

    _import Java.sql.*;
    class testmssql
    {
        public static void main(String args[]) throws Exception
        {
            Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection      con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;
                    databaseName=chapter16","sa","123");//repalce your databse name and user name
                Statement st=con.createStatement();
            ResultSet rs=st.executeQuery("Select * from login");//replace your table name
            while(rs.next())
            {
                String s1=rs.getString(1);
                String s2=rs.getString(2);
                System.out.println("UserID:"+s1+"Password:"+s2);
            }
            con.close();
        } 
    }
    _
  3. プログラムをコンパイルし、jarクラスパスvizを設定します。_set classpath=C:\jdbc\sqljdbc4.jar;.;_ダウンロードして解凍した後にjarファイルを_C:\jdbc_に保存した場合。

  4. プログラムを実行し、TCP/IPサービスが有効になっていることを確認します。有効になっていない場合は、次の手順に従ってください。
    1. [スタート]-> [すべてのプログラム]-> [Microsoft SQL Server 2008]-> [構成ツール]-> [SQL Server構成マネージャー]に移動します。
    2. SQL Serverネットワーク構成を展開します。MSSQL Serverインスタンスを選択します。 MSQSLSERVERとTCP/IPを有効にします。
    3. MS SQL Serverインスタンスを再起動します。これは、MS SQLサーバーインスタンスのルートレベルにあるMicrosoft SQL Server Management Studioの右クリックメニューからも実行できます。
3
Pradyumna Swain

最新のJDBC MSSQL接続ドライバーは JDBC 4. にあります。

クラスファイルはクラスパスにある必要があります。 Eclipseを使用している場合は、次の操作を行うことで簡単に同じことができます->

プロジェクト名を右クリック->プロパティ-> Javaビルドパス->ライブラリ->外部jarを追加

また、@ Cheesoによってすでに指摘されているように、正しいアクセス方法はjdbc:sqlserver:// server:port; DatabaseName = dbnameです。

一方、MSSQL DB(私の場合は2008)にアクセスするためのサンプルクラスを見つけてください。

import Java.sql.Connection;
import Java.sql.DriverManager;
import Java.sql.ResultSet;
import Java.sql.Statement;

public class ConnectMSSQLServer
{
   public void dbConnect(String db_connect_string,
            String db_userid,
            String db_password)
   {
      try {
         Class.forName("com.Microsoft.sqlserver.jdbc.SQLServerDriver");
         Connection conn = DriverManager.getConnection(db_connect_string,
                  db_userid, db_password);
         System.out.println("connected");
         Statement statement = conn.createStatement();
         String queryString = "select * from SampleTable";
         ResultSet rs = statement.executeQuery(queryString);
         while (rs.next()) {
            System.out.println(rs.getString(1));
         }
         conn.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args)
   {
      ConnectMSSQLServer connServer = new ConnectMSSQLServer();
      connServer.dbConnect("jdbc:sqlserver://xx.xx.xx.xxxx:1433;databaseName=MyDBName", "DB_USER","DB_PASSWORD");
   }
}

お役に立てれば。

0
misguided

名前付きインスタンス?

URL:jdbc:sqlserver:// [serverName] [\ instanceName] [:portNumber] [; property = value]

注:バックスラッシュ