数据库连接简化 - 这是对的吗?

时间:2012-11-20 05:16:13

标签: c# sql-server-2008

我正在尝试自学c#,并找到了连接到MSSQL数据库的各种示例。我所做的似乎是最简单的方法,但似乎仍然过于复杂。

有更好的方法吗?

这是我的代码:

static void dbcon()
{
    List<int> familyID = new List<int>();
    String connString = "Server=[myServer]\\[myInstance];Database=[dbName];User Id=[userID};Password=[password];";
    using (var sqlconn = new SqlConnection(connString))
    {
        using (var cmd = sqlconn.CreateCommand())
        {
            try
            {
                sqlconn.Open();
                cmd.CommandText = "SELECT id FROM family";
                using (var reader = cmd.ExecuteReader())
                {

                    while (reader.Read())
                    {
                        familyID.Add(Convert.ToInt32(reader["id"].ToString()));
                    }
                }
                foreach (int tempy in familyID)
                {
                    Console.WriteLine("id: " + tempy);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }                   
        }
    }
}

3 个答案:

答案 0 :(得分:2)

这适用于只运行一个sql语句的应用程序,但您不希望每次需要新数据时都使用所有代码。

您要做的是将创建连接的代码与获取和运行sql的代码从处理结果的代码分开。

这样,连接代码(可能还有数据显示代码)可以写入一次并在每次要执行不同的sql时调用,而只需要专注于如何编写获取所需数据的代码

HTH

答案 1 :(得分:0)

详细信息:首先欢迎使用Stackoverflow。只是下面的一些提示

让你的连接字符串像这样硬编码是不好的做法。您应该始终在App.config中使用它(如果它是Web应用程序,则应该是Web.config)。原因是因为如果您对其进行硬编码并且您的老板要求您更改应用程序数据库连接字符串,则需要重新编译整个应用程序。如果你在App.config文件中有它,你只需要更改它(用记事本打开它)并保存它。

有关如何将其添加到app.config

的示例
<configuration>
   <connectionStrings>
         <add name="myConnectionString" 
           connectionString="Data Source=localhost;Initial Catalog=MySQLServerDB; 
           Integrated Security=true" providerName="System.Data.SqlClient" />
   </connectionStrings>
</configuration>

然后在您的代码中访问它(您需要添加对System.Configuration的引用以及使用System.Configuration添加;)

string connString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

关于你的其他代码,我会先修改你的异常捕获,先包含Sql异常,然后再回到其他任何异常。

  catch (SqlException ex)
  {
      // Handle the Sql Exception code
  }
  catch (Exception ex)
  {
      // Handle the Normal Exception code
  }

答案 2 :(得分:0)

SqlConnectionStringBuilder文档中包含的示例很容易理解并作为替代方式理解。

System.Data.SqlClient.SqlConnectionStringBuilder builder =
  new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);

修改:

实际上,我上面复制的示例向您展示了SqlConnectionStringBuilder类如何以安全的方式处理&#34; ...无效值&#34;。哎呦。至少它可以让你了解它是如何工作的。

有关在ADO.NET中获取,存储和构建连接字符串的各种方法的更多信息,请查看MSDN documentation on Connection Strings