1

我正在尝试自学 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);
            }                   
        }
    }
}
4

3 回答 3

2

这对于只运行一条 sql 语句的应用程序来说很好,但您不希望每次需要新数据时都使用所有这些代码。

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

这样,连接代码(也可能是数据展示代码)可以编写一次,每次你想执行不同的sql时调用,你只需要专注于如何编写获取你想要的数据的代码。

hth

于 2012-11-20T05:22:55.773 回答
0

详细信息:首先欢迎来到 Stackoverflow。下面只是一些提示

像这样对连接字符串进行硬编码是不好的做法。你应该总是把它放在你的 App.config 中(或者 Web.config 如果它是一个 Web 应用程序)。原因是,如果您对其进行了硬编码并且您的老板要求您更改应用程序数据库连接字符串,您将需要重新编译整个应用程序。如果你在 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
  }
于 2012-11-20T06:49:36.423 回答
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 类如何以安全的方式处理“...无效值”。哎呀。至少它让你了解它是如何工作的。

有关在 ADO.NET 中获取、存储和构造连接字符串的各种方法的更多信息,请查看MSDN 文档中的连接字符串

于 2012-11-20T07:41:52.453 回答