Входная строка не была в правильном формате - PullRequest
1 голос
/ 11 июля 2011

Я новичок в создании приложений с использованием Visual Studio 2010 и MySQL.Я создаю приложение, которое добавляет информацию в базу данных.Но затем, когда я нажимаю кнопку добавления, появляется сообщение об ошибке, в котором говорится Введенная строка была в неправильном формате. Но я вводил буквы в текстовое поле и использовал VarChar в качестве типа данных.Теперь я не могу понять, в чем проблема.Может ли кто-нибудь помочь мне с этим, пожалуйста?

Код:

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 ]

1 голос
/ 13 июля 2011

Не ответ, но, возможно, распространенный способ борьбы с такими проблемами в будущем.Если я сталкиваюсь с такими проблемами, я упрощаю его до минимальной формы.В вашем случае это будет что-то вроде:

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

Это позволяет сузить места, где некоторые опечатки могут свести вас с умаПридерживайтесь упрощенной формы, пока проблема не будет решена, чтобы вы могли быть уверены, что логика кода верна.Затем вернитесь к полной версии кода и посмотрите, работает ли он.Если нет, то, вероятно, это просто опечатки.

1 голос
/ 11 июля 2011

Я считаю, что параметры MySQL должны иметь префикс?вместо @:

new MySqlParameter( "?company_name", ... )
command.Parameters["?company_name"].Value = ...

Редактировать: Я где-то читал, но сам в этом не уверен.

1 голос
/ 11 июля 2011

Нашел:

В списке полей вставки есть хотя бы одна орфографическая ошибка

1 голос
/ 11 июля 2011

Очевидно, что для параметра @company_province_zipcode нет присвоения значения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...