在将文本添加到cpr_txtbx,name_txtbx和address_txtbx之后,我将它们转换为要在我的语句字符串中使用的参数。我正在使用的MySQL服务器需要以下语法:“ INSERT INTO people(type,cpr,name,address)” VALUES('cpr','name','address')“(是,单引号),我弄乱我的头发,试图弄清楚这里的语法。
我的按钮现在看起来像这样(我知道这是错误的):
private void add_btn_Click(object sender, RoutedEventArgs e)
{
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', ':cpr', ':name', ':address')";
this.AUD(statement, 0);
add_btn.IsEnabled = false;
edit_btn.IsEnabled = true;
delete_btn.IsEnabled = true;
}
澳元为:
private void AUD(string statement, int state)
{
string msg = "";
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = statement;
cmd.CommandType = CommandType.Text;
switch (state)
{
case 0:
msg = "Borger tilføjet.";
cmd.Parameters.Add("cpr", MySqlDbType.Text, 10).Value = cpr_txtbx.Text;
cmd.Parameters.Add("name", MySqlDbType.Text).Value = name_txtbx.Text;
cmd.Parameters.Add("address", MySqlDbType.Text).Value = address_txtbx.Text;
break;
case 1:
msg = "Borger modificeret.";
cmd.Parameters.Add("address", MySqlDbType.Text).Value = address_txtbx.Text;
break;
case 2:
msg = "Borger slettet.";
cmd.Parameters.Add("cpr", MySqlDbType.Text, 10).Value = cpr_txtbx.Text;
break;
}
try
{
int n = cmd.ExecuteNonQuery();
if ( n > 0 )
{
MessageBox.Show(msg);
this.updateDataGrid();
}
}
catch(MySqlException ex)
{
MessageBox.Show(ex.ToString());
}
}
我正在关注的教程在这里:https : //www.youtube.com/watch?v=NiGsgctfiYM
这是我无法上班的唯一事情,因此,非常感谢您的帮助:)
不要将参数占位符放在SQL字符串定界符内。
错误:
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', ':cpr', ':name', ':address')";
对:
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', :cpr, :name, :address)";
发表您的评论:
我再次看了您正在使用的视频教程,并且看到它显示了Oracle语法。请记住,尽管使用标准SQL语言,但是每个SQL数据库品牌都有其自己的语法。因此,您应该使用所使用品牌的文档和教程。
我不是C#开发人员,所以起初我没有注意到MySQL中查询参数的语法不同于Oracle。
https://dev.mysql.com/doc/connector-net/zh-CN/connector-net-programming-prepared-preparing.html显示了一个示例,该示例@
以参数代替:
。因此,我假设您可以使用以下语法来修复代码:
string statement = "INSERT INTO people (type, cpr, name, address)" +
"VALUES('citizen', @cpr, @name, @address)";
然后稍后添加值:
cmd.Parameters.AddWithValue("@cpr", cpr_txtbx.Text);
cmd.Parameters.AddWithValue("@name", name_txtbx.Text);
cmd.Parameters.AddWithValue("@address", address_txtbx.Text);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句