1

最近インストールされた Visual Studio 2012 を使用していますが、SQL Server データベースに接続できません。

これらは私が従っている手順です

  1. 作成App1.config
  2. これを入力してApp1.configください:

     <?xml version="1.0" encoding="utf-8" ?>
     <configuration>
       <connectionStrings>
         <add name ="xxx" connectionString="USER ID=xx;PASSWORD=xx;PERSIST SECURITY INFO=True;Data Source=xx;Initial Catalog=xx" />
       </connectionStrings>
     </configuration>
    
  3. プロジェクトへの参照を追加しますSystem.Configuration

  4. 以下を介して名前空間へのアクセスを作成します。

     using System.Data.SqlClient;
     using System.Data;
     using System.Configuration;
    
  5. 以下を実装します。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    
    namespace ConsoleApplication10 {
        class Program {
            static void Main(string[] args) {
    
                SqlConnection conn = null;
                conn = new SqlConnection(ConfigurationManager.ConnectionStrings["xxx"].ConnectionString);
    
            }
        }
    }
    
  6. 新しいコンソール アプリを作成し、上記を追加しましたが、まだエラーが発生しますNullReferenceException was unhandled Object reference not set to an instance of an object....

ここに画像の説明を入力

編集

即時ウィンドウを介して、次のものがヌルであると判断しました。

ConfigurationManager.ConnectionStrings["xxx"].ConnectionString

接続文字列をコンストラクターにハードコードすると、正常に接続されSqlConnectionます

私は何が欠けているのですか - 本当に明白な何か!! それとも、これは私の新しい VS に関連していますか?

4

5 に答える 5

3

出力フォルダを確認してください。

アプリケーションが呼び出されたと仮定するとmyapp.exemyapp.exe.config.

これは存在する必要があり、app.configVisual Studio にファイルの内容が含まれている必要があります。

そうでない場合は、他のapp.config場所に既にファイルがあるかどうかを確認してください(あなたがあなたのファイルを呼び出したことに気づきましたapp1.config

于 2013-01-23T13:04:20.093 に答える
3

少なくとも次を実行して、ConfigurationManager.ConnectionStrings の内容を確認します。

if (ConfigurationManager.ConnectionStrings != null ) {
    Console.WriteLine(ConfigurationManager.ConnectionStrings.Count);
    Console.WriteLine(ConfigurationManager.ConnectionStrings[0].ConnectionString);
    Console.WriteLine(ConfigurationManager.ConnectionStrings[0].Name);
    ....
} else {
    Console.WriteLine("null");
}

App.configこれにより、ファイルの重複などの明らかな問題が強調表示さApp1.configれますOP

于 2013-01-23T13:26:15.893 に答える
2

ConfigurationManager.ConnectionStrings["xxx"].ConnectionString の値を確認し、その値をハードコーディングしてみましたか? それでもヌルになりますか?

また、次のように接続を作成することをお勧めします。

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["xxx"].ConnectionString))
{
        //code        
}

返信しますが、まだ十分な担当者がいません... :-(

于 2013-01-23T13:00:13.930 に答える
2

あなたのコードはまだ「何もしない」という事実から推測すると、渡した接続文字列名が返されるconnと確信しています。有効な接続の代わりに渡すと、のコンストラクターによって例外がスローされますストリング。ConfigurationManagernullSqlConnectionnull

于 2013-01-23T13:10:33.897 に答える
0

接続文字列を [プロパティ] -> [設定] に接続文字列として配置するときは、完全な名前空間でそれらにアクセスすれば完了です。

ここで私の答えを見てください

于 2015-08-16T16:15:44.003 に答える