C# 我的选择有什么问题?
我试图在数据库中查找一段数据,并将其分配给一个变量。我得到的错误是 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为字符串 我做错了什么?你必须改用 您还应该使用sql参数来防止sql注入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
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
}
}