Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的选择有什么问题?_C#_Sql_Sql Server_Database - Fatal编程技术网

C# 我的选择有什么问题?

C# 我的选择有什么问题?,c#,sql,sql-server,database,C#,Sql,Sql Server,Database,我试图在数据库中查找一段数据,并将其分配给一个变量。我得到的错误是 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为字符串 我做错了什么?你必须改用 您还应该使用sql参数来防止sql注入 string checker = (string)check.ExecuteScalar(); 如果您希望每个序列有多行,则可以使用ExecuteReader并填写列表: List allLocations=new List(); 使用(SqlDataReade

我试图在数据库中查找一段数据,并将其分配给一个变量。我得到的错误是

无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为字符串

我做错了什么?

你必须改用

您还应该使用sql参数来防止sql注入

string checker = (string)check.ExecuteScalar();
如果您希望每个序列有多行,则可以使用
ExecuteReader
并填写
列表

List allLocations=new List();
使用(SqlDataReader rd=check.ExecuteReader())
while(rd.Read())
添加(rd.GetString(0));
您必须改用

您还应该使用sql参数来防止sql注入

string checker = (string)check.ExecuteScalar();
如果您希望每个序列有多行,则可以使用
ExecuteReader
并填写
列表

List allLocations=new List();
使用(SqlDataReader rd=check.ExecuteReader())
while(rd.Read())
添加(rd.GetString(0));

将检查器类型从
string
更改为
SqlDataReader

那你就可以做了

List<string> allLocations = new List<string>();
using(SqlDataReader rd = check.ExecuteReader())
while(rd.Read())
    allLocations.Add(rd.GetString(0));

将检查器类型从
string
更改为
SqlDataReader

那你就可以做了

List<string> allLocations = new List<string>();
using(SqlDataReader rd = check.ExecuteReader())
while(rd.Read())
    allLocations.Add(rd.GetString(0));

ExecuteScalar将只返回第一个结果。@JustAndrei:但OP需要一个字符串。我假设
Serial
应该是唯一的。但是,编辑,增加了读者阅读的方法。很可能你是对的,但是我更喜欢明确地说,因为仍然有一个很小的机会,有许多项目具有相同的序列号。列名不是很明显,ItemID可以确定。是的,它是一个唯一的序列,将用于存储管理。ExecuteScalar将只返回第一个结果。@JustAndrei:但是OP需要一个字符串。我假设
Serial
应该是唯一的。但是,编辑,增加了读者阅读的方法。很可能你是对的,但是我更喜欢明确地说,因为仍然有一个很小的机会,有许多项目具有相同的序列号。列名不是很明显,ItemID可以确保。是的,它是一个唯一的序列,将用于存储管理。
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connecton1"].ConnectionString);
conn.Open();
SqlCommand check = new SqlCommand("SELECT Location FROM Items WHERE Serial           ="+Convert.ToInt32(Serialtxt.Text).ToString()+"", conn);
SqlDataReader checker = check.ExecuteReader();

    while (checker.Read())
    {
           if (checker[0] != null)
           {
              //some logic with the result
           }
    }