我目前正在使用C#WPF开发应用程序。我正在尝试将数据存储到MySQL数据库中。以下是我的代码。
MySqlCommand cmd = new MySqlCommand("", conn);
cmd.CommandText = "INSERT INTO BUG_REPORTS (bug_softwareID, bug_firstName, bug_lastName, bug_email, bug_description, bug_ip_addr, bug_dateReported) "
+ "VALUES (@softwareID, @firstName, @lastName, @email, @description, @ip_addr, @dateReported)";
cmd.Parameters.Add("@softwareID");
cmd.Parameters.Add("@firstName");
cmd.Parameters.Add("@lastName");
cmd.Parameters.Add("@email");
cmd.Parameters.Add("@description");
cmd.Parameters.Add("@ip_addr");
cmd.Parameters.Add("@dateReported");
cmd.Parameters["@softwareID"].Value = softwareID;
cmd.Parameters["@firstName"].Value = getFirstName();
cmd.Parameters["@lastName"].Value = getLastName();
cmd.Parameters["@email"].Value = getEmail();
cmd.Parameters["@description"].Value = getDescription();
cmd.Parameters["@ip_addr"].Value = ip_addr;
cmd.Parameters["@dateReported"].Value = date;
cmd.ExecuteNonQuery();
每当我尝试插入记录时,它都会出现错误'只能存储MySQLParameter对象。我究竟做错了什么。我找到了文章,一切似乎都没问题。
感谢您提供的任何帮助
答案 0 :(得分:2)
在你的参数中尝试:
cmd.Parameters.Add(new OdbcParameter("@softwareID", softwareID));
依此类推,等等其他参数。
说实话,构建你的sql内联并执行没有参数的命令可能同样简单,除非你没有验证文本并关注注入攻击。
答案 1 :(得分:0)
我不确定它是否直接转换,但是当我想用T-SQL INSERT或UPDATE一个表时,我使用.ExecuteScalar()。
答案 2 :(得分:0)
您是否尝试过使用此风格?它更紧凑,可能解决您的问题。
cmd.Parameters.Add("@softwareID",softwareID);
cmd.Parameters.Add("@firstName",getFirstName());
cmd.Parameters.Add("@lastName",getLastName());
cmd.Parameters.Add("@email",getEmail());
cmd.Parameters.Add("@description",getDescription());
cmd.Parameters.Add("@ip_addr",ip_addr);
cmd.Parameters.Add("@dateReported",date);
cmd.ExecuteNonQuery();
答案 3 :(得分:0)
MySql .NET连接器的参数标识符为“?”。
所以你必须使用以下代码:
cmd.CommandText = "INSERT INTO BUG_REPORTS (bug_softwareID, bug_firstName, bug_lastName, bug_email, bug_description, bug_ip_addr, bug_dateReported) "
+ "VALUES (?softwareID, ?firstName, ?lastName, ?email, ?description, ?ip_addr, ?dateReported)";
cmd.Parameters.Add("?softwareID");
cmd.Parameters.Add("?firstName");
cmd.Parameters.Add("?lastName");
cmd.Parameters.Add("?email");
cmd.Parameters.Add("?description");
cmd.Parameters.Add("?ip_addr");
cmd.Parameters.Add("?dateReported");
cmd.Parameters["?softwareID"].Value = softwareID;
cmd.Parameters["?firstName"].Value = getFirstName();
cmd.Parameters["?lastName"].Value = getLastName();
cmd.Parameters["?email"].Value = getEmail();
cmd.Parameters["?description"].Value = getDescription();
cmd.Parameters["?ip_addr"].Value = ip_addr;
cmd.Parameters["?dateReported"].Value = date;