環境は、
OS:win XP
Webサーバ:tomcat5.5
統合開発環境:eclipse3.2
DB:SQL server 2005
です。
SQLserverのJDBCドライバ(sqljdbc.jsp)を、%CATALINA_HOME%common/libに配置し、DB接続用のサーブレットを作成、デバッグを行いましたが、
com.microsoft.sqlserver.jdbc.SQLServerException: TDS ログイン前応答が不完全です。対象サーバーは SQL Server 2000 以降である必要があります。
とのエラーが表示され接続できませんでした。
またデバッグを行ったところ、
Class.forName(driver);
までは通りますが、次の行の
con = DriverManager.getConnection(url,user,passwd);
でエラーになるようです。次のステップは、データベース切断の
public synchronized void close() throws Exception {
行に飛んでしまいます。
どなたかお気づきの方がおられればご回答願います。
ソースは以下の通りです。
////////////////////////////////////////////
package report.pack;
import java.sql.*;
public class DatabaseAccess {
private String driver;
private String url;
private String user;
private String passwd;
private Connection con;
private Statement stmt;
private ResultSet rs;
/**
* コンストラクタ
*/
public DatabaseAccess() {
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://localhost:8080;databaseName=testdb;";
user = "";
passwd = "";
}
/**
* データベースに接続
*/
public synchronized void open() throws Exception {
// ドライバクラスをロード
Class.forName(driver);
// データベースへ接続
con = DriverManager.getConnection(url,user,passwd);
// ステートメントオブジェクトを生成
stmt = con.createStatement();
}
/**
* データベースから切断
*/
public synchronized void close() throws Exception {
if (stmt!=null) {
stmt.close();
}
if (con!=null) {
con.close();
}
}
/**
* クエリーを実行(検索)
*/
public ResultSet executeQuery(String sql) throws Exception {
return stmt.executeQuery(sql);
}
/**
* クエリーを実行(新規、更新、削除)
*/
public int executeUpdate(String sql) throws Exception {
return stmt.executeUpdate(sql);
}
}
//////////////////////////////////////
No.1ベストアンサー
- 回答日時:
接続URLのportが8080になっていますが、これはTomcatのportでは
ないですか?
SQLServerの場合は、規定値 1433で、変更していなければ指定する必要はないと思いますが。
url = "jdbc:sqlserver://localhost:8080;databaseName=testdb;";
参考URL:http://msdn.microsoft.com/ja-jp/library/ms378428 …
>rooksanさん
すみません、一週間以上も音信不通になりまして・・・。
結局、試行錯誤の末、自己解決しました。
(ポートは8080で大丈夫のようです。)
DBに接続の際のユーザ名とパスワードが間違っていたという、凡ミスでした。。。
Microsoft SQL Server Management StudioでDB管理を行っておりましたが、その際のログインアカウント「Windows認証」でログインしていました。
「SQL server認証」のアカウントを作って試したところ、接続することができました。
以下、私が行った手順を示します。
1.Microsoft SQL Server Management Studioを起動します。
2.「Windows認証」か「SQLserver認証」でログインします。
3.「オブジェクトエクスプローラ」の「<サーバ名>」-「セキュリティ」-「ログイン」を右クリックし、「新しいログイン」を選択します。
4.以下の設定をします。
<<全般タグ>>
・ログイン名「sqlserver」(任意)
・「SQL Server認証」にチェック。
・パスワード「sqlserver」(任意)
・「パスワードポリシー」と「パスワードの期限を適用する」と「ユーザーは次回ログイン時にパスワードを変更する」のチェックを外す。
・「規定のデータベース」に「testdb」を選択します。
・「規定の言語」に「Japanese」を選択します。
<<サーバーロール>>
・「sysadmin」にチェックを入れる。
<<ユーザー マッピング>>
・[「testdb」の「マップ」にチェックを入れる。
<<状態>>
・データベースエンジンに接続する権限:許可
・ログイン:有効
5.OKをクリック。
6.以下のソースを変更。
public DatabaseAccess() {
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://localhost:8080;databaseName=testdb;";
user = "";
passwd = "";
}
↓ 変更後
public DatabaseAccess() {
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://localhost:8080;databaseName=testdb;";
user = "sqlserver";
passwd = "sqlserver";
以上で、接続を確認できました。
お騒がせ致しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DB接続ができなくなって困って...
-
SQLServer,接続失敗時のエラー...
-
ACCESSからSQLServerのデータを...
-
symfowareへのODBC接続方法
-
DBに接続する時のオープンとク...
-
コンピュータ名の変更によってI...
-
drop user できない。ORA-01940
-
MSDEの同時接続ユーザー制限
-
タイムアウト
-
SQLで同じDBに対し2つのコネク...
-
IBM系のDBでIMSに関して
-
OLE DBプロバイダを使ってADOで...
-
VB6.0(SP6)でMySQLに接続したい
-
ACCESS VBAでサーバー起動して...
-
ACCESSからのODBC接続のみ応答...
-
Oracle 8i コンマ(,)を含むデ...
-
Excelフィルタ抽出で「検索して...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
GROUP BYでエラーが発生
-
SQLServer2005のストプロでxp_c...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DB接続ができなくなって困って...
-
ACCESSからのODBC接続のみ応答...
-
SQLServer,接続失敗時のエラー...
-
ACCESSからSQLServerのデータを...
-
SQLで同じDBに対し2つのコネク...
-
drop user できない。ORA-01940
-
ACCESS VBAでサーバー起動して...
-
ADOを利用したODBC、OLEDB経由...
-
クライアントでの処理が遅い
-
SQL Serverの移行について
-
symfowareへのODBC接続方法
-
SQLServer認証とWIndows認証
-
SQL Server 2005 Standard Edit...
-
SQLServerの接続が突然できなく...
-
ACCESS ODBC 接続ダイアログ 非...
-
SQLSERVERへのODBC接続について
-
IISから起動したEXEがSqlServer...
-
SQLServer2005 Express リモー...
-
mdbに接続できません
-
MSDEの同時接続ユーザー制限
おすすめ情報