select语句的返回值

mac*_*007 5 .net c# oledb ms-access select

我有这个小问题.我想将select语句的结果值检索到字符串变量中.像这样

OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = GetConnection();
cmd1.CommandText = "SELECT treatment FROM appointment WHERE patientid = " + text;
cmd1.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

我希望将选定的处理值放入字符串变量中.我怎样才能做到这一点.谢谢

Son*_*nül 20

使用ExecuteReader()与否ExecuteNonQuery().ExecuteNonQuery()仅返回受影响的行数.

try
{
    SqlDataReader dr = cmd1.ExecuteReader();
}
catch (SqlException oError)
{

}
while(dr.Read())
{
    string treatment = dr[0].ToString();
}
Run Code Online (Sandbox Code Playgroud)

或者更好的是,使用一个using声明.

using(SqlDataReader dr = cmd1.ExecuteReader())
{
    while(dr.Read())
    {
        string treatment = dr[0].ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是如果SqlCommand只返回1列,则可以使用该ExecuteScalar()方法.它返回第一行的第一列,如下所示: -

cmd.CommandText = "SELECT treatment FROM appointment WHERE patientid = " + text;
string str = Convert.ToString(cmd.ExecuteScalar());
Run Code Online (Sandbox Code Playgroud)

您也可以打开SQL Injection的代码.始终使用参数化查询.杰夫有一篇很酷的博客文章叫做给我参数化SQL,或者给我死亡.请仔细阅读.另请阅读DotNetPerl SqlParameter文章.在您处理查询时,SQL注入非常重要.