Member 13764552 Ответов: 1

Отображение ошибки в виде имени coloumn или номера предоставленных значений не совпадает


private void subbut_Click(object sender, EventArgs e)
        {
            string name = NameTextbox.Text;
            string eid = EmailTextbox.Text;
            string cnumber = ContactTextbox.Text;
            string quali = Qualicombobox.Text;
            string exp = Expcombobox.Text;
            string loc = Locationcombobox.Text;
            string fun = Functionalitycombobox.Text;
            string ctc = Current_ctccombobox.Text;
            string ectc = Expected_ctccombobox.Text;
            string np = Noticeprdcombobox.Text;
            string role = Rolecombobox.Text;
            string adhar = Aadhartextbox.Text;
            string pan = Pantextbox.Text;
            string pas = Passporttextbox.Text;
            string comp = Ccomptextbox.Text;
            string compp = Prevcomptextbox.Text;
            string comppp = Prevcotextbox.Text;
            string add = Addrestextbox.Text;
            string padd = Paddrestextbox.Text;
            string dob = maskedTextBox1.Text;

            string connection = @"Data Source=DESKTOP-U5UOJOV\SQLEXPRESS;Initial Catalog=BK;Integrated Security=True";
            SqlConnection cn = new SqlConnection(connection);
            try
            {
                cn.Open();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            string sqlquery;
            sqlquery = "INSERT INTO tb VALUES ('" + NameTextbox.Text + "','" + EmailTextbox.Text + "','"+ContactTextbox.Text+"'," +
                "'" + Qualicombobox.Items[0].ToString() + "','" + Expcombobox.Items[0].ToString() + "','" + Locationcombobox.Items[0].ToString() + "','" + Functionalitycombobox.Items[0].ToString() + "','" +Current_ctccombobox.Items[0].ToString() + "','" + Expected_ctccombobox.Items[0].ToString() + "'" +
                ",'" + Noticeprdcombobox.Items[0].ToString() + "','" + Rolecombobox.Items[0].ToString() + "','" + Aadhartextbox.Text + "','" + Pantextbox.Text + "','" + Passporttextbox .Text+ "','" + Ccomptextbox.Text + "','" + Prevcomptextbox.Text + "'" +
                ",'" + Prevcotextbox.Text + "','" + Addrestextbox.Text + "','" + Paddrestextbox.Text + "','" + maskedTextBox1.Text + "')";
            

            try
            {
                SqlCommand command = new SqlCommand(sqlquery, cn);


                command.ExecuteNonQuery();
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            NameTextbox.Text = "";
            EmailTextbox.Text = "";
            
            ContactTextbox.Text="";
            Qualicombobox.Text="";
             Expcombobox.Text="";
            Locationcombobox.Text="";
            Functionalitycombobox.Text="";
            Current_ctccombobox.Text="";
            Expected_ctccombobox.Text="";
            Noticeprdcombobox.Text="";
           Rolecombobox.Text="";
          Aadhartextbox.Text="";
             Pantextbox.Text="";
             Passporttextbox.Text="";
         Ccomptextbox.Text="";
            Prevcomptextbox.Text="";
             Prevcotextbox.Text="";
            Addrestextbox.Text="";
           Paddrestextbox.Text="";
           maskedTextBox1.Text="";
            cn.Close();
        }


Что я уже пробовал:

Я хочу вставить все представленные значения в форму в БД

F-ES Sitecore

Как мы должны знать, есть ли несоответствие между вашим кодом и вашей таблицей, если мы не знаем, как выглядит таблица? Вам просто нужно перепроверить свой SQL, но вот несколько советов

1) явно назовите свои поля во вставке

вставить в таблицу (field1, field2) значения (value1, value2)

2) преобразуйте свой код для использования параметризованных запросов (google for info)

Эти две вещи не только значительно прояснят вашу проблему, но и устранят проблемы безопасности в вашем коде.

Richard MacCutchan

Не делайте этого так, как вы можете видеть, трудно увидеть, где строка неверна. Используйте правильные параметризованные запросы и убедитесь, что вы указали правильное количество параметров.

CHill60

Вы также должны сказать нам, что такое полная ошибка

1 Ответов

Рейтинг:
1

CHill60

Это гораздо аккуратнее (обратите внимание, что это непроверено)...

ivate void subbut_Click(object sender, EventArgs e)
{

	string connection = @"Data Source=DESKTOP-U5UOJOV\SQLEXPRESS;Initial Catalog=BK;Integrated Security=True";
	using SqlConnection cn = new SqlConnection(connection)
	{
		cn.Open();

		string sqlquery = "INSERT INTO tb VALUES (@Name,@Email,@Contact,@Quali,@Exp,@Location,@Functionality,@Current,@Expected," +
							"@Noticeprd,@Role,@Aadhar,@Pan,@Passport,@Ccomp,@Prevcomp,@Prevco,@Addres,@Paddres,@dob)";


		using SqlCommand command = new SqlCommand(sqlquery, cn)
		{
			command.Parameters.AddWithValue("@Name",NameTextbox.Text);
			command.Parameters.AddWithValue("@Email",EmailTextbox.Text);
			command.Parameters.AddWithValue("@Contact",ContactTextbox.Text);
			command.Parameters.AddWithValue("@Quali",Qualicombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Exp",Expcombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Location",Locationcombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Functionality",Functionalitycombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Current",Current_ctccombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Expected",Expected_ctccombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Noticeprd",Noticeprdcombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Role",Rolecombobox.Items[0].ToString());
			command.Parameters.AddWithValue("@Aadhar",Aadhartextbox.Text);
			command.Parameters.AddWithValue("@Pan",Pantextbox.Text);
			command.Parameters.AddWithValue("@Passport",Passporttextbox .Text);
			command.Parameters.AddWithValue("@Ccomp",Ccomptextbox.Text);
			command.Parameters.AddWithValue("@Prevcomp",Prevcomptextbox.Text);
			command.Parameters.AddWithValue("@Prevco",Prevcotextbox.Text);
			command.Parameters.AddWithValue("@Addres",Addrestextbox.Text);
			command.Parameters.AddWithValue("@Paddres",Paddrestextbox.Text);
			command.Parameters.AddWithValue("@dob",maskedTextBox1.Text);
		
			command.ExecuteNonQuery();

		}
	}

	ClearTextBoxes();
}

Если после этого вы получаете ту же ошибку, то у вас должен быть ненулевой столбец, который вы не включили-часто бывает хорошей идеей перечислить столбцы, которые вы планируете добавить, например
INSERT INTO tb ([name],email, contact, ... etc)
VALUES (@name, @email, @contact, ... etc)


Member 13764552

команда.Параметры.Addwithvalue(@Name,NamTextbox.Text);


@Name какая это переменная?
Будь то колонка БД или?
Имя текстового поля?

Maciej Los

Заменять:

command.Parameters.AddWithValue(@Name,NameTextbox.Text);

С:
command.Parameters.AddWithValue("@Name",NameTextbox.Text);


Один "@Name" переменная соответствует параметр sql для команд. См. текст команды (который хранится в sqlquery переменная).

CHill60

Ой! Спасибо за это - я приведу в порядок свое решение. Твоя очередь быть ястребиным глазом! :-)

Maciej Los

;)

CHill60

Мои извинения - теперь я исправил опечатки в своем решении

Maciej Los

5ed!