如何使用ADO.NET从C#中的SQL Server中检索数据?

时间:2017-10-24 09:17:40

标签: c# sql-server ado.net

您能否告诉我如何从SQL Server检索数据到C#(Windows窗体应用程序)?

考虑我有一个文本框,我需要用SQL Server WHERE 'emp_id = something'中的数据填充它,例如,如何在没有DataGridView的情况下完成它?

或者采取另一个例子:

SELECT sum(column) FROM table_name

如何获取上述命令的值(也没有DataGridView)?

3 个答案:

答案 0 :(得分:1)

填写文本框:

using (var sqlConnection = new SqlConnection("your_connectionstring"))
{
    sqlConnection.Open();

    using (var sqlCommand = sqlConnection.CreateCommand())
    {
        sqlCommand.CommandText = "select sum(field) from your_table";

        object result = sqlCommand.ExecuteScalar();

        textBox1.Text = result == null ? "0" : result.ToString();
    }

    sqlConnection.Close();

}

如果要读取多行,可以查看SqlCommand.ExecuteReader()

答案 1 :(得分:1)

有多种方法可以实现这一目标。您可以使用DataReaderDataSet \ DataTable。它们分别是连接和断开的体系结构。如果您只想检索一个值,也可以使用ExecuteScalar

建议:

  • SqlConnection(以及任何其他IDisposable对象)括在using块中。我的代码使用try-catch阻止。
  • 始终使用参数化查询。

以下是一些带有DataReader的示例代码,以防您的查询返回多行。代码是从here复制的。

//Declare the SqlDataReader
SqlDataReader rdr = null;

//Create connection
SqlConnection conn = new SqlConnection("Your connection string");

//Create command
SqlCommand cmd = new SqlCommand("Your sql statement", conn);

try
{
    //Open the connection
    conn.Open();

    // 1. get an instance of the SqlDataReader
    rdr = cmd.ExecuteReader();

    while(rdr.Read())
    {
        // get the results of each column
        string field1 = (string)rdr["YourField1"];
        string field2 = (string)rdr["YourField2"];
    }
}
finally
{
    // 3. close the reader
    if(rdr != null)
    {
        rdr.Close();
    }

    // close the connection
    if(conn != null)
    {
        conn.Close();
    }
}

如果您的查询返回单个值,您可以继续使用除SqlDataReader之外的上述代码。使用int count = cmd.ExecuteScalar();。请注意ExecuteScalar可能会返回null;所以你应该采取额外的预防措施。

答案 2 :(得分:0)

您需要使用直接数据库访问,例如在此处记录的System.Data.SqlClient命名空间System.Data.SqlClient Namespace

基本上,查找创建SQLConnection和SQLCommand并使用它们来检索数据。