我是使用Visual Studio 2010和MySQL创建应用程序的新手。我正在创建一个将信息添加到数据库的应用程序。但是当我单击添加按钮时,会出现一条错误消息,指出输入字符串格式不正确。但是我在文本框中输入了字母,我使用VarChar作为DataType。现在,我无法弄清楚问题是什么。有人可以帮我这个吗?
代码:
private void buttonaddcompany_Click(object sender, EventArgs e)
{
string MyConString = "SERVER=localhost;" + "DATABASE=payroll;" + "UID=root;" + "PASSWORD=admin;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
command.Connection = connection;
using (MySqlConnection conn = new MySqlConnection(MyConString))
{
connection.Open();
using (MySqlCommand com = connection.CreateCommand())
{
command.CommandText = "insert into company(company_name, company_other_names, company_office_number, company_office_building, company_office_street, company_office_village, company_municipality_name, company_municipality_zipcode, company_province_name, company_province_zipcode, company_country_name, company_country_zipcode) values(?company_name, ?company_other_names, ?company_office_number, ?company_office_building, ?company_office_street, ?company_office_village, ?company_municipality_name, ?company_municipality_zipcode, ?company_province_name, ?company_province_zipcode, ?company_country_name, ?company_country_zipcode)";
command.Parameters.Add(new MySqlParameter("?company_name", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_other_names", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_office_number", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_office_building", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_office_street", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_office_village", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_municipality_name", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_municipality_zipcode", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_province_name", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_province_zipcode", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_country_name", MySqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("?company_country_zipcode", MySqlDbType.VarChar));
command.Parameters["?company_name"].Value = addcompname.Text;
command.Parameters["?company_other_names"].Value = addcompothername.Text;
command.Parameters["?company_office_number"].Value = addoffnumber.Text;
command.Parameters["?company_office_building"].Value = addoffbuilding.Text;
command.Parameters["?company_office_street"].Value = addoffstreet.Text;
command.Parameters["?company_office_village"].Value = addoffvillage.Text;
command.Parameters["?company_municipality_name"].Value = addoffmunname.Text;
command.Parameters["?company_municipality_zipcode"].Value = addoffmunzipcode.Text;
command.Parameters["?company_province_name"].Value = addoffprovname.Text;
command.Parameters["?company_province_zipcode"].Value = addoffprovzipcode.Text;
command.Parameters["?company_country_name"].Value = addoffcountryname.Text;
command.Parameters["?company_country_zipcode"].Value = addoffcountryzipcode.Text;
command.ExecuteNonQuery();
MessageBox.Show("Data Saved");
}
}
}
截图:
![在此输入图片说明] [2]
答案 0 :(得分:1)
显然参数@company_province_zipcode没有赋值?
答案 1 :(得分:1)
我相信MySQL参数需要加上前缀?而不是@:
new MySqlParameter( "?company_name", ... )
command.Parameters["?company_name"].Value = ...
编辑:我在某个地方看过这个,但我自己也不确定。
答案 2 :(得分:1)
找到它:
插入字段列表中至少有一个拼写错误。:
compnay_office_village
答案 3 :(得分:1)
不是答案,但也许是将来解决此类问题的常用方法。如果我遇到这样的问题,我会将其简化为最小的形式。在你的情况下,这将是一些事情:
private void buttonaddcompany_Click(object sender, EventArgs e)
{
string MyConString = "SERVER=localhost;" + "DATABASE=payroll;" + "UID=root;" + "PASSWORD=admin;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
command.Connection = connection;
using (MySqlConnection conn = new MySqlConnection(MyConString))
{
connection.Open();
using (MySqlCommand com = connection.CreateCommand())
{
command.CommandText = "insert into company(company_name, /* other fields here , */ company_country_zipcode) values(?company_name, 'company_other_names', /* other hardcoded fields here , */ 'company_country_zipcode')";
command.Parameters.Add(new MySqlParameter("?company_name", SqlDbType.VarChar));
command.Parameters["?company_name"].Value = addcompname.Text;
command.ExecuteNonQuery();
MessageBox.Show("Data Saved");
}
}
}
这允许缩小地方有一些错别字可以让你发疯。坚持使用简化形式直到问题得到解决,因此您可以确保代码逻辑是正确的。然后返回完整代码版本,看看它是否正常工作。如果没有,那么可能只是错别字。