hay*_*sam 2 c# sql database sql-server
我有以下内容:
String sql = "SELECT * FROM Temp WHERE Temp.collection = '" + Program.collection + "'";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
Program.defaultCollection = (String)cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
我想在执行语句后得到第二列.我知道它只返回一行有两列
我在网上看过,我必须阅读结果的每一行,还有其他方法吗?
ExecuteScalar从结果集的第一行获取第一列.如果您需要访问更多,您需要采取不同的方法.像这样:
DataTable dt = new DataTable();
SqlDataAdapater sda = new SqlDataAdapter(sql, conn);
sda.Fill(dt);
Program.defaultCollection = dt.Rows[0]["defaultCollection"];
Run Code Online (Sandbox Code Playgroud)
现在,我意识到字段名称可能不是defaultCollection,但你可以填写.
从MSDN文档中ExecuteScalar:
执行查询,并返回查询返回的结果集中第一行的第一列.其他列或行将被忽略.
现在,作为最后一点建议,请将所有ADO.NET对象包装在一个using语句中.像这样:
using (SqlConnection conn = new SqlConnection(connString))
using (SqlDataAdapter sda = new SqlDataAdapter(sql, conn))
{
DataTable dt = new DataTable();
sda.Fill(dt);
// do something with `dt`
}
Run Code Online (Sandbox Code Playgroud)
这将确保他们妥善处置.