如何从数据库中获取简单的字符串

Exi*_*tos 3 c# sql asp.net ado.net

以下代码不起作用.此表中只有一行.我如何获得sql将返回的语句?:

SqlConnection conn = new SqlConnection(connectionStringArg);
SqlCommand command = new SqlCommand("select applicationname from tbl_settings");
command.Connection = conn;
conn.Open();
string simpleValue = command.ExecuteReader()[0].ToString();
conn.Close();
return simpleValue;
Run Code Online (Sandbox Code Playgroud)

好的,如何实现这个相对简单的任务的任何帮助都会很棒.

Odr*_*ade 19

由于只返回一个值,您可以这样做:

 string value = (string)command.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)

如果您需要的内容超过返回的第一行中的第一列,则需要使用ExecuteReader().看到driis的回答.


dri*_*iis 6

DataReader的不能被索引这样.你需要这样的东西:

using(conn)
using(var reader = command.ExecuteReader()) 
{
    reader.Read();
    string simpleValue = reader.GetString(0);
}
Run Code Online (Sandbox Code Playgroud)

一般的想法是为每个记录(使用Read)推进阅读器,然后您可以从行中读取值.正如另一个答案所指出的,如果你知道结果集中只有一个单独的值,command.ExecuteScalar()那就给你一个.


Mar*_*ins 5

您必须Read在从ExecuteReader返回的DataReader上调用该方法才能到达第一行.像这样的东西:

        SqlDataReader rdr = command.ExecuteReader();
        if (rdr.Read())
             ...
Run Code Online (Sandbox Code Playgroud)