使用C#将记录插入MySQL数据库

我目前正在使用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对象。 我究竟做错了什么。 我发现文章,一切似乎都没问题。

感谢您的任何帮助,您可以提供

在您的参数中尝试:

 cmd.Parameters.Add(new OdbcParameter("@softwareID", softwareID)); 

依此类推,等等其他参数。

而且说实话,只需要构建你的sql内联并执行没有参数的命令就可以了,除非你没有validation文本并关注注入攻击。

我不确定它是否直接转换,但是当我想用T-SQL INSERT或UPDATE一个表时,我使用.ExecuteScalar()。

你尝试过这种风格吗? 它更紧凑,可能解决您的问题。

 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(); 

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;