这是我的代码,但它给了我执行期间遇到的致命错误
private void recregtxt_TextChanged(object sender, EventArgs e)
{
if (recregcmb.Text == "Student ID")
{
MySqlDataAdapter sda = new MySqlDataAdapter("select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key", conn);
DataTable data = new DataTable();
sda.Fill(data);
dataGridView2.DataSource = data;
cmd.Parameters.AddWithValue("@key", recregtxt.Text + "%");
}
}
任何人都可以帮我解决这个问题。
答案 0 :(得分:3)
因为您尝试在之后添加参数名称及其值,所以您可以使用数据适配器执行它。您应该在执行之前添加
。if (recregcmb.Text == "Student ID")
{
MySqlDataAdapter sda = new MySqlDataAdapter("select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key", conn);
cmd.Parameters.AddWithValue("@key", recregtxt.Text + "%");
DataTable data = new DataTable();
sda.Fill(data);
dataGridView2.DataSource = data;
}
还有一些事情;
AddWithValue
。 It may generate unexpected and surprising results sometimes。使用Add
方法重载来指定参数类型及其大小。using
statement自动处理数据适配器。顺便说一下,你的方法中有没有 cmd
。在方法中定义命令和连接,同时处理它们using
语句。
答案 1 :(得分:1)
您的代码有什么问题:
您几乎就在那里但是您正在执行查询而不添加参数值,并在执行命令后添加参数值:
你需要做什么:
在执行查询之前添加参数值,因此您的代码段将如下所示:
if (recregcmb.Text == "Student ID")
{
MySqlDataAdapter sda = new MySqlDataAdapter("select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key", conn);
cmd.Parameters.Add("@key", SqlDbType.VarChar).Value = recregtxt.Text + "%";
DataTable data = new DataTable();
sda.Fill(data);
dataGridView2.DataSource = data;
}
答案 2 :(得分:0)
conn.Open();
cmd = conn.CreateCommand();
cmd.CommandText = "select StudID, LastName, FirstName, MiddleInitial, Address, Age, Birthday, Gender, Guardian, ContactNumber as 'Contact Number', Year as 'Year Level' from registeredTBL where StudID LIKE @key;";
MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
cmd.Parameters.AddWithValue("@key", recregtxt.Text + "%");
DataTable data = new DataTable();
sda.Fill(data);
dataGridView2.DataSource = data;
我不知道为什么但是这段代码有效,当我使用Add而不是AddWithValue时,编译器会给出关于无效日期时间的错误,但谢谢大家的帮助。