C# 调用Read()之前访问字段的尝试无效。代码不工作
当进入if条件时,在调用Read()之前会出现一个无效的异常尝试来访问字段,而我也在使用d2.Read()。首先,您应该始终使用。这种类型的字符串连接对攻击是开放的 方法逐行读取您的C# 调用Read()之前访问字段的尝试无效。代码不工作,c#,mysql,c#-4.0,C#,Mysql,C# 4.0,当进入if条件时,在调用Read()之前会出现一个无效的异常尝试来访问字段,而我也在使用d2.Read()。首先,您应该始终使用。这种类型的字符串连接对攻击是开放的 方法逐行读取您的MySqlDataReader。您之所以会出现此错误,可能是因为您无法在不迭代的情况下读取数据读取器字段。你可以像这样使用它 string query2 = "Select * from books where Book_code="; query2 = query2+ "'" + textBox2.Text + "
MySqlDataReader
。您之所以会出现此错误,可能是因为您无法在不迭代的情况下读取数据读取器字段。你可以像这样使用它
string query2 = "Select * from books where Book_code=";
query2 = query2+ "'" + textBox2.Text + "'";
cmd = new MySqlCommand(query2, con);
MySqlDataReader d2 = cmd.ExecuteReader();
d2.Read();
if (d2.GetString(0).ToLower() == textBox2.Text.ToLower())
{
}
还可以使用处置MySqlCommand
和MySqlDataReader
while(d2.Read())
{
if (d2.GetString(0).ToLower() == textBox2.Text.ToLower())
{
//
}
}
您应该检查
读取的结果
:
using(MySqlConnection con = new MySqlConnection(ConnectionString))
using(MySqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "Select * from books where Book_code = @code";
cmd.Parameters.AddWithValue("@code", textBox2.Text);
using(MySqlDataReader d2 = cmd.ExecuteReader())
{
while(d2.Read())
{
if (d2.GetString(0).ToLower() == textBox2.Text.ToLower())
{
//
}
}
}
}
请注意,
DbConnection
、DbCommand
和DbDataReader
子体正在实现IDisposable
。您应该通过块来处理它们。建议使用参数化查询来避免SQL注入攻击
还要注意MySqlDataReader.Read()
returnboolean
value。
它将为您逐行读取记录。它应该在读取器到达最后检索的行时执行
if (d2.Read())
{
if (d2.GetString(0).ToLower() == textBox2.Text.ToLower())
{
}
}
学习如何设置问题的格式。您需要使用MySqlCommand参数。您能告诉我为什么需要再次与textBox2.Text
进行比较吗?我想有时候textbook2.Text会有一些值,查询结果将不会返回任何值,因为可能b没有记录作为textbook2.Text值。所以我比较了一下,如果给定的reslut和教科书中的reslut会做一些比较,然后做一些动作。。Hassansari有时会想textbook2.text会有一些值,而查询结果不会返回任何结果,因为可能b没有记录作为textbook2.text值。所以我比较了一下,如果给定的reslut和教科书中的reslut会做一些比较,然后做一些动作@哈桑尼萨
string query = "Select * from books where Book_code=@BookCode";
cmd = new MySqlCommand(query, con);
cmd.Parameters.AddWithValue("@BookCode", textBox2.Text);
using(MySqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
if (reader.GetString(0).ToLower() == textBox2.Text.ToLower())
{
}
}
}