如何使用检索和使用设置值连接数据库

时间:2014-02-26 13:35:57

标签: c#

我正在开发窗口应用程序,我希望应用程序的用户可以更改连接字符串,所以我创建一个表单来保存连接字符串到设置并能够检索它但问题是如何使用此设置

private void button1_Click(object sender, EventArgs e) 
{ 
    var serv = Properties.Settings.Default.server; 
    var db = Properties.Settings.Default.database; 
    var userid = Properties.Settings.Default.userid; 
    var pass = Properties.Settings.Default.password; 

    SqlConnection conn = new SqlConnection("Data Source=serv;Initial Catalog=db;User ID=userid password=pass"); 
    SqlDataAdapter sda = new SqlDataAdapter("SELECT count(*) FROM users WHERE username='" + txtUsername.Text + "' and password='" + txtPassword.Text + "'", conn); 
}

3 个答案:

答案 0 :(得分:2)

将您的连接字符串放在App.config/Web.config中,如果需要,它将使以后更容易更改。

另请注意,在使用using时,请始终使用SqlConnection语句。

例如:

App.config/Web.config中添加以下内容:

<appSettings>
   <add key="myConnectionString" value="Data Source=serv;Initial Catalog=db;User ID=userid password=pass" />
</appSettings>

然后您可以在项目的任何位置轻松访问它:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["myConnectionString"]))
{
  using(SqlCommand sqlCommandConn = new SqlCommand(InsertStatement))
  {
    sqlCommandConn.Connection = conn;
    //TODO: Open connection, Execute queries...
  }
}

注意

如果您愿意,也可以通过代码更改这些设置:

   private void UpdateConfig(string key, string value)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configFile.AppSettings.Settings[key].Value = value;

        configFile.Save();
    }

答案 1 :(得分:0)

尝试

SqlConnection conn = new SqlConnection("Data Source=" + serv.ToString() + ";Initial Catalog=" + db.ToString() + ";User ID=" + userid.ToString() + ";password= " + pass.ToString()); 

答案 2 :(得分:0)

正如您在代码片段中看到的那样,连接字符串值只是您传递给string构造函数的SqlConnection,因此对于您的情况,您可以在运行时拉取值并加载那个价值动态。

虽然可以操作保存连接字符串值的app.config文件,但我通常更喜欢操作辅助文件。例如,更好的选择可能是在XML中使用辅助文件,并在用户更改其连接字符串时对其执行CRUD操作。在运行时,您可以提取其特定的连接字符串值,并将其加载到构造函数中,如上所述。 XML结构示例如下:

<connections>
  <connection userID="12345">Data Source=servA;Initial Catalog=db123;User ID=jSmith password=pass1</connection>
  <connection userID="43532">Data Source=servB;Initial Catalog=db456;User ID=rJSmith password=abc321</connection>
</connections>

如果所有改变的是用户,传递,目录和数据源值,并且连接字符串的其余部分是静态的,您可以只存储这些单独的值而不是整个连接字符串,然后动态地将它们注入到构建中运行时的连接字符串。

使用LINQ to XML等内容时,读取XML并不困难,这样可以查询XML文件并通过userID字段获取特定的连接字符串。 LINQ to XML的一个很好的参考如下:http://msdn.microsoft.com/en-us/library/bb387098.aspx