输入字符串不是正确的格式

时间:2011-07-11 03:13:28

标签: c# mysql visual-studio-2010 user-input

我是使用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");
            }
        }
    }

截图: enter image description here

![在此输入图片说明] [2]

4 个答案:

答案 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");
        }
    }
}

这允许缩小地方有一些错别字可以让你发疯。坚持使用简化形式直到问题得到解决,因此您可以确保代码逻辑是正确的。然后返回完整代码版本,看看它是否正常工作。如果没有,那么可能只是错别字。