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

时间:2011-02-16 19:54:36

标签: 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对象。我究竟做错了什么。我找到了文章,一切似乎都没问题。

感谢您提供的任何帮助

4 个答案:

答案 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;