您能否告诉我如何从SQL Server检索数据到C#(Windows窗体应用程序)?
考虑我有一个文本框,我需要用SQL Server WHERE 'emp_id = something'
中的数据填充它,例如,如何在没有DataGridView的情况下完成它?
或者采取另一个例子:
SELECT sum(column) FROM table_name
如何获取上述命令的值(也没有DataGridView)?
答案 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)
有多种方法可以实现这一目标。您可以使用DataReader
或DataSet
\ 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并使用它们来检索数据。