【发布时间】:2018-07-12 01:45:49
【问题描述】:
当我的查询太长时,我经常遇到这种情况。我已经定义了参数@no_registrasi,但是还是报错。
MySql.Data.MySqlClient.MySqlException:命令执行过程中遇到致命错误。 ---> MySql.Data.MySqlClient.MySqlException:必须定义参数“@no_registrasi”。
这是我的代码:
void Tombol_cari_simpanan1Click(object sender, EventArgs e)
{
string connectionString = "Server=localhost;User ID=root;Password=;Database=koperasi;Convert Zero Datetime=True;";
MySql.Data.MySqlClient.MySqlConnection connect = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
connect.Open();
string query = "select * from simpanan left join anggota on simpanan.no_registrasi = anggota.no_registrasi left join jenis_simpanan on simpanan.id_jenis_simpanan = jenis_simpanan.id_jenis_simpanan where simpanan.no_registrasi = @no_registrasi";
MySql.Data.MySqlClient.MySqlCommand myCommand = new MySql.Data.MySqlClient.MySqlCommand(query, connect);
myCommand.Parameters.AddWithValue("@no_registrasi", int.Parse(textbox_pencarian_no_registrasi.Text));
MySql.Data.MySqlClient.MySqlDataReader reader=myCommand.ExecuteReader();
connect.Close();
mySqlDataAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter(query, connect);
DataSet DS = new DataSet();
mySqlDataAdapter.Fill(DS);
datagrid_simpanan.DataSource = DS.Tables[0];
connect.Close();
}
【问题讨论】:
-
您调用了
myCommand.ExecuteReader和mySqlDataAdapter.Fill- 第二个没有为其定义参数。除非你真的打算两次做同样的事情,否则你应该删除其中一个 -
@kevin : 不确定,但我认为在 MySQL 中,查询结束时需要
; -
Thierry V:我尝试了你的建议,但它不起作用。 @JayV:这是有道理的,但我不知道如何向 mySqlDataAdapter 添加参数。你能帮我回答一下吗?
-
你给
connect.Close()打了两次电话。尝试删除第一个。 -
检查这个答案,它真的帮助了我。 stackoverflow.com/a/21795988/6898760
标签: c# mysql parameters