Inserting a record into a MySQL database using C #

I am currently developing an application using C # WPF. I am trying to store data in a MySQL database. Below is the code that I have.

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

Every time I try to insert a record, it appears with the error "Only MySQLParameter objects can be saved. What am I doing wrong. I found an article and everything looks fine.

Thanks for any help you can provide.

+4
source share
4 answers

In your options try:

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

And so on and so forth. with the rest of your options.

And to be honest, it would just be easy to build your embedded sql string and execute the command without parameters unless you confirm the text and worry about injection attacks.

+2
source

I'm not sure if it translates directly, but when I want to INSERT or UPDATE a table with T-SQL, I use .ExecuteScalar ().

0
source

You tried this using this style. It is much more compact and can solve your problem.

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

The parameter identifier with the MySql.NET connector is '?'.

So you should use the following code:

 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; 
0
source

Source: https://habr.com/ru/post/1340072/


All Articles