0

既に確立されている Winforms アプリケーションに新しいフォームを追加しようとしています。

フォームに DataGridView があり、コードの背後に関連するメソッドがあり、dbAPI DataTable メソッドを呼び出します。dbAPI クラスで使用されている他の多くのコードとまったく同じコードでメソッドを作成しましたが、何らかの理由で接続文字列を初期化していません...

 public DataTable getMyTable()
    {
        //used for populating the DataGridView
        SqlCommand _com = new SqlCommand(string.Format("select * from tab.myTable where Country = 'Angola' "), _conn);
        _com.CommandTimeout = _command_timeout;

        DataSet _ds = new DataSet();
        SqlDataAdapter _adapt = new SqlDataAdapter();
        try
        {
            _adapt.SelectCommand = _com;
            int i = _adapt.Fill(_ds, "Asset_Transactions");
            if (_ds.Tables.Count > 0)
            {
                return _ds.Tables[0];
            }
            else
            {
                return makeErrorTable("GetMyTable", "No Table Returned for myTable");
            }
        }
        catch (Exception e)
        {
            return makeErrorTable("GetMyTable", e.Message);
        }
    }

_conn は SQLConnection オブジェクトです。私の接続文字列はapp.configにあります...

  class dbAPI
{
    Utils _utils = new Utils();

    //this is the API between the Application Code and the LDB Database
    string _ldb_connection_string = (string)dii.Properties.Settings.Default.connLDB; //connection string but with only one \ in settings as it gets converted to \\
    int _command_timeout = Convert.ToInt32((string)dii.Properties.Settings.Default.commandTimeOut); //Command time out
    SqlConnection _conn = new SqlConnection();

    public dbAPI()
    {
        //constructor
    }

    #region --------------- Database Connectivity Section
    public string openLocalDatabaseConnection()
    {
        try
        {
            //try to create the connection
            _conn = new SqlConnection(_ldb_connection_string);
            _conn.Open();
        }
        catch (Exception e)
        {
            return string.Concat("Can't connect to LDB with '", e.Message, "'");
        }

        return ""; //success
    }
    public string closeLocalDatabaseConnection()
    {
        _conn.Close();
        _conn.Dispose();

        return "";
    }

空の接続文字列が表示され、「ConnectionString プロパティが初期化されていません」という例外がスローされます。クラスには問題なく動作する他のメソッドが多数あるため、わかりません。何か案は?

ありがとう

4

2 に答える 2

0

たとえば、アプリケーション構成ファイルをプロジェクト (または所有しているプロジェクト内) に追加し、これを配置します (もちろん、名前と接続文字列を配置します):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name ="MyConnection" connectionString ="your connection string here"/>
  </connectionStrings>
</configuration>

次に、_ldb_connection_string で:

string _ldb_connection_string = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
于 2013-11-06T13:33:43.920 に答える