[過去ログ]
ふらっと C#,C♯,C#(初心者用) Part141 (1002レス)
ふらっと C#,C♯,C#(初心者用) Part141 http://mevius.5ch.net/test/read.cgi/tech/1544838367/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
393: デフォルトの名無しさん [] 2020/03/08(日) 17:03:53 ID:NoMbfY/N 質問です。 Adaptive Code 第2版を読んでいるのですが、 SQLを用いたサンプルプログラムの実行がうまくいかず、困っています。 サンプルは以下のものを使用しています。 https://github.com/AdaptiveCode/AdaptiveCode/tree/master/Chapter12/ch12-b_st_rd-injection/DependencyInjectionWpf SQL Serverとの接続をする部分で例外を出します。 具体的には、以下のソースファイルの26行目です。 https://github.com/AdaptiveCode/AdaptiveCode/blob/master/Chapter12/ch12-b_st_rd-injection/DependencyInjectionWpf/ServiceImplementations/TaskServiceAdo.cs エラーメッセージは、以下のとおりです。 System.Data.SqlClient.SqlException: 'SQL Server への接続を確立しているときに ネットワーク関連またはインスタンス固有のエラーが発生しました。 サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、 および SQL Server がリモート接続を許可するように構成されていることを確認してください。 (provider: Named Pipes Provider, error: 40 - SQL Server への接続を開けませんでした)' 動作環境はWindows 10、Visual Studio Community 2019です。 SQL Server Express 2016 LocalDB はVSと同時にインストールしてあります。 解決策をご教示いただきたく、よろしくお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1544838367/393
394: デフォルトの名無しさん [sage] 2020/03/08(日) 17:44:31 ID:K4cIg85y >>393 using(var connection = new SqlConnection(settings.GetSetting("TaskDatabaseConnectionString"))){ この次の行で止めてconnection.ConnectionStringの値を確認してみ LocalDBしかインストールしてないなら接続文字列は "(LocalDB)\{LocalDBインスタンス名}" みたいな形式でないと接続できないよ このあたりを参考にしてね https://blog.clock-up.jp/entry/2016/07/27/vs-sqlserver-localdb http://mevius.5ch.net/test/read.cgi/tech/1544838367/394
395: 393 [] 2020/03/08(日) 18:15:24 ID:vsuFdxy2 >>394 早速ありがとうございます。 connection.ConnectionStringの値は、以下のようになっていました。 ConnectionString = "Data Source=(local);Initial Catalog=TaskDatabase;Integrated Security=True;Application Name=Task List Editor" ソースコードを読み解いてみると、接続文字列は以下のApp.configから読み取るようになっていました。 https://github.com/AdaptiveCode/AdaptiveCode/blob/master/Chapter12/ch12-b_st_rd-injection/DependencyInjectionWpf/UI/App.config そこでApp.config内の接続文字列を"Data Source=(LocalDB)\MSSQLLocalDB;.....(以下省略)"と変更したところ、 エラーメッセージが変化しました。以下のとおりです。 System.Data.SqlClient.SqlException: 'Cannot open database "TaskDatabase" requested by the login. The login failed. Login failed for user '{自分のPCのホスト名}\{ユーザー名}'.' どうやらこれだけでは解決しないようなので、 教えていただいたブログの情報を参考に設定を変更してみます。 それでもうまく行かなければまたご質問いたします。 http://mevius.5ch.net/test/read.cgi/tech/1544838367/395
397: デフォルトの名無しさん [sage] 2020/03/08(日) 18:32:39 ID:AVAsnwFk >>393 出版社に送ってやれよ くだらんコードのせいでプロジェクトが暗礁に乗り上げた エラーの理由もわけがわからない これがadaptive codeってことでよろしいですか? って http://mevius.5ch.net/test/read.cgi/tech/1544838367/397
398: 393 [] 2020/03/08(日) 19:12:05 ID:vsuFdxy2 >>394 教えていただいた解説ブログを参考に設定を確認しました。 ・LocalDB の存在確認 コントロールパネルの「プログラムと機能」にMicrosoft SQL Server Express 2016 LocalDB が存在しており、インストールはできているようです。 ・有効な LocalDB のインスタンス名を確認 解説と同様に、sqllocaldb infoをコマンドプロンプトで実行すると、以下が表示されました。 MSSQLLocalDB ProjectsV13 ・SQL Server Data Tools for Visual Studio の存在確認 コントロールパネルの「プログラムと機能」には存在しませんでした。しかしVisual Studioの「ツール」→「ツールと機能を取得」を 確認すると「SQL Server Data Tools」にはチェックマークが入っており、インストールはできているように見えます。 ・Visual Studio に LocalDB インスタンス名を設定しておく "(LocalDB)\MSSQLLocalDB" が既に設定されていました。 ・Visual Studio 内 Server Explorer から LocalDB 接続を行う 解説の通りmdfファイルを作成しました。接続文字列を確認し、サンプルプログラムのApp.config内の接続文字列を、以下の通り変更してみました。 "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={先ほど作成したmdfファイルのパス}; Initial Catalog=TaskDatabase;Integrated Security=True;Application Name=Task List Editor" すると、発生する例外が変わり、以下の通りになりました。 System.Data.SqlClient.SqlException: 'Cannot attach file '{先ほど作成したmdfファイルのパス}' as database 'TaskDatabase' because this file is already in use for database '{先ほど作成したmdfファイルのパス}'' >>396 「SQL Server オブジェクト エクスプローラー」 を開いたところ、「SQL Server」→「(localdb)\MSSQLLocalDB」→「データベース」 のところに解説ブログに従って作成したmdfファイルのパスが表示されています。(これで「作ってある」と言えるのかがよく分かりませんが…) http://mevius.5ch.net/test/read.cgi/tech/1544838367/398
399: 393 [] 2020/03/08(日) 19:36:27 ID:vsuFdxy2 すみません、どうやら解決しました。 サンプルプログラムのTaskDatabaseプロジェクトの「プロパティ」→「デバッグ」を見たところ、 「ターゲット接続文字列」が以下のように記載されていました。 Data Source=(localdb)\ProjectsV13;Initial Catalog=TaskDatabase;Integrated Security=True;Pooling=False;Connect Timeout=30 また、「SQL Server オブジェクト エクスプローラー」をよくよく見てみると、 「SQL Server」の下には「(localdb)\MSSQLLocalDB」のほかに「(localdb)\ProjectsV13」があり、 その下に今回のサンプルプログラムで使用する「TaskDatabase」が作成されていました(いつの間にできた??)。 そこで接続文字列のデータソースを「(localdb)\ProjectsV13」に変更したところ、サンプルプログラムがうまく動作しました。 SQL周りの知識が全く無いので、MDFファイルがなぜ、いつの間に作成されていたのか、、、 まだ理解できていないところはありますが、とりあえず先には進めそうです。 教えていただいた皆様、ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1544838367/399
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.489s*