'int'附近的语法不正确。必须声明标量变量“@”。 [英] Incorrect syntax near 'int'. Must declare the scalar variable "@".

查看:156
本文介绍了'int'附近的语法不正确。必须声明标量变量“@”。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Описание:Необработанноеисключениевозниклововремявыполнениятекещеговеб-запроса。



我尝试过:



Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса.

What I have tried:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Taxi
{
    public partial class Add_New_Driver : Form
    {
        SqlConnectionStringBuilder bldr;
        SqlConnection cn;


        public Add_New_Driver()
        {
            InitializeComponent();
            bldr = new SqlConnectionStringBuilder();
            bldr.DataSource = @"HOME-ПК\MYSQL";
            bldr.IntegratedSecurity = true;
            // bldr.AttachDBFilename = @"E:\Programs\SQL\MSSQL12.MYSQL\MSSQL\DATA\Тест_Автотранспортное_Предприятие.mdf";
         bldr.AttachDBFilename = @"E:\Тест_Автотранспортное_Предприятие.mdf";
           // bldr.AttachDBFilename = "" + Application.StartupPath.ToString() + "\\" + "Тест_Автотранспортное_Предприятие.mdf";




            label1.Text = "Дата рождения";
            label2.Text = "Категория водительского удостоверения";
            label3.Text = "Семейное положение";
            label4.Text = "Фамилия Имя Отчество водителя";

            button1.Text = "Добавить";
        }

        private void Add_New_Driver_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string strSQL;
            
            using (SqlConnection cn = new SqlConnection(bldr.ConnectionString))
            {
                try
                {
                    cn.Open();
                     strSQL = "SELECT * FROM Водители";

                     SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
                     DataTable t = new DataTable("Водители");
                     da.Fill(t);
                     DataRow rowToInsert;
                     rowToInsert = t.Rows.Add(new object[] { Convert.ToInt32(textBox4.Text), dateTimePicker1.Value.ToString("yyyy-MM-dd"), textBox1.Text, textBox2.Text, textBox3.Text });

                     string strInsert = @"INSERT INTO Водители ([Код водителя], [Дата рождения], [Категория водительского удостоверения], [Семейное положение], [Фамилия Имя Отчество водителя])" + "VALUES (@[Код водителя], @[Дата рождения], @[Категория водительского удостоверения], @[Семейное положение], @[Фамилия Имя Отчество водителя]) ";

                     SqlCommand cmdInsert = new SqlCommand(strInsert, cn);
                     cmdInsert.Parameters.AddWithValue("@Код водителя", rowToInsert["Код водителя"]);
                     cmdInsert.Parameters.AddWithValue("@Дата рождения", rowToInsert["Дата рождения"]);
                     cmdInsert.Parameters.AddWithValue("@Категория водительского удостоверения", rowToInsert["Категория водительского удостоверения"]);
                     cmdInsert.Parameters.AddWithValue("@Семейное положение", rowToInsert["Семейное положение"]);
                     cmdInsert.Parameters.AddWithValue("@Фамилия Имя Отчество водителя", rowToInsert["Фамилия Имя Отчество водителя"]);

                     cmdInsert.ExecuteNonQuery();
                     rowToInsert.AcceptChanges();
                    

                   /* string insertWorker = "INSERT INTO Водители VALUES (" + Convert.ToInt32(textBox4.Text) + ",'" + dateTimePicker1.Value + "','" + textBox1.Text + "','" +
                     textBox2.Text + "','" + textBox3.Text + "')";
                    SqlCommand insert = new SqlCommand(insertWorker, cn);
                    if (insert.ExecuteNonQuery() == 1)
                        MessageBox.Show("Запись успешно добавлена!", "Добавление записи", MessageBoxButtons.OK, MessageBoxIcon.Information);*/
                    
                    cn.Close();
                }

                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}

推荐答案

参数名称不能包含空格。尝试:

Parameter names cannot contain spaces. Try:
string strInsert = @"INSERT INTO Водители ([Код водителя], [Дата рождения], [Категория водительского удостоверения], [Семейное положение], [Фамилия Имя Отчество водителя])" + "VALUES (@[Кодводителя], @[Датарождения], @[Категорияводительскогоудостоверения], @[Семейноеположение], @[ФамилияИмяОтчествоводителя]) ";

 SqlCommand cmdInsert = new SqlCommand(strInsert, cn);
 cmdInsert.Parameters.AddWithValue("@Кодводителя", rowToInsert["Код водителя"]);
 cmdInsert.Parameters.AddWithValue("@Датарождения", rowToInsert["Дата рождения"]);
 cmdInsert.Parameters.AddWithValue("@Категорияводительскогоудостоверения", rowToInsert["Категория водительского удостоверения"]);
 cmdInsert.Parameters.AddWithValue("@Семейноеположение", rowToInsert["Семейное положение"]);
 cmdInsert.Parameters.AddWithValue("@ФамилияИмяОтчествоводителя", rowToInsert["Фамилия Имя Отчество водителя"]);

 cmdInsert.ExecuteNonQuery();


在我看来,你试图使用:
It looks to me like you tried to use:
引用:

DataRow rowToInsert;

DataRow rowToInsert;





在实例化之前。



before it was instantiated.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Taxi
{
    public partial class Remove_Info_About_Driver : Form
    {
        SqlConnectionStringBuilder bldr;
        SqlConnection cn;

        public Remove_Info_About_Driver()
        {
            InitializeComponent();

            bldr = new SqlConnectionStringBuilder();
            bldr.DataSource = @"HOME-ПК\MYSQL";
            bldr.IntegratedSecurity = true;
            // bldr.AttachDBFilename = @"E:\Programs\SQL\MSSQL12.MYSQL\MSSQL\DATA\Тест_Автотранспортное_Предприятие.mdf";
            bldr.AttachDBFilename = @"E:\Тест_Автотранспортное_Предприятие.mdf";

            label1.Text = "Введите код водителя";
            label2.Text = "Дата рождения";
            label3.Text = "Категория водительского удостоверения";
            label4.Text = "Семейное положение";
            label5.Text = "Фамилия Имя Отчество водителя";
            button1.Text = "Поиск";
            button2.Text = "Найти и отредактировать";
            button3.Text = "Принять изменения";

        }

        private void Remove_Info_About_Driver_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
             string strSQL;
             strSQL = "SELECT * FROM Водители";
            // string info;
            // string info1;
            string strOp;

            /*if (checkBox1.Checked == false || checkBox2.Checked == false)
                strOp = "OR";
            else
                strOp = "AND";*/
            
            if (checkBox1.Checked == true)
            strSQL = "SELECT * FROM Водители WHERE [Код водителя]='" + textBox1.Text + "'";

            if (checkBox2.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Фамилия Имя Отчество водителя]= '" + textBox5.Text + "'"; 

            if (checkBox3.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Дата рождения]= '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "'";

            if (checkBox4.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Категория водительского удостоверения]= '" + textBox3.Text + "'";

            if (checkBox5.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Семейное положение]= '" + textBox4.Text + "'";



            using (cn = new SqlConnection(bldr.ConnectionString))
            {
                try
                {
                    cn.Open();
                    SqlCommand cmd = new SqlCommand(strSQL, cn);
                    SqlDataReader rdr = cmd.ExecuteReader();


                    DataTable t = new DataTable();
                    t.Load(rdr);
                    dataGridView1.DataSource = t.DefaultView;


                    cn.Close();
                }

                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string strSQL;
            strSQL = "SELECT * FROM Водители";
            
            string strOp;

            

            if (checkBox1.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Код водителя]='" + textBox1.Text + "'";

            if (checkBox2.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Фамилия Имя Отчество водителя]= '" + textBox5.Text + "'";

            if (checkBox3.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Дата рождения]= '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "'";

            if (checkBox4.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Категория водительского удостоверения]= '" + textBox3.Text + "'";

            if (checkBox5.Checked == true)
                strSQL = "SELECT * FROM Водители WHERE [Семейное положение]= '" + textBox4.Text + "'";



            using (cn = new SqlConnection(bldr.ConnectionString))
            {
                try
                {
                    cn.Open();

                    if (checkBox1.Checked == true)
                        strSQL = "SELECT * FROM Водители WHERE [Код водителя]='" + textBox1.Text + "'";

                    if (checkBox2.Checked == true)
                        strSQL = "SELECT * FROM Водители WHERE [Фамилия Имя Отчество водителя]= '" + textBox5.Text + "'";

                    if (checkBox3.Checked == true)
                        strSQL = "SELECT * FROM Водители WHERE [Дата рождения]= '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "'";

                    if (checkBox4.Checked == true)
                        strSQL = "SELECT * FROM Водители WHERE [Категория водительского удостоверения]= '" + textBox3.Text + "'";

                    if (checkBox5.Checked == true)
                        strSQL = "SELECT * FROM Водители WHERE [Семейное положение]= '" + textBox4.Text + "'";


                    SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
                    DataTable t = new DataTable("Водители");

                    da.Fill(t);
                    dataGridView1.DataSource = t;

                    textBox1.DataBindings.Add(new Binding("Text", t, "Код водителя"));
                    textBox1.Visible = true;
                    textBox3.DataBindings.Add(new Binding("Text", t, "Категория водительского удостоверения"));
                    textBox3.Visible = true;
                    textBox4.DataBindings.Add(new Binding("Text", t, "Семейное положение"));
                    textBox4.Visible = true;
                    textBox5.DataBindings.Add(new Binding("Text", t, "Фамилия Имя Отчество водителя"));
                    textBox5.Visible = true;
                    dateTimePicker1.DataBindings.Add(new Binding("Text", t, "Дата рождения"));
                    dateTimePicker1.Visible = true;

                    button2.Visible = true;

                    cn.Close();
                }

                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            using (cn = new SqlConnection(bldr.ConnectionString))
            {
                try
                {
                    cn.Open();

                    string strUpd = "UPDATE Водители " + "SET [Код водителя]=@[Кодводителя],[Дата рождения]=@[Датарождения]," + "[Категория водительского удостоверения]=@[Категрияводительскогоудостоверения],[Семейное положение]=@[Семейноеположение],[Фамилия Имя Отчество водителя]=@[ФамилияИмяОтчествоводителя] " + "WHERE [Код водителя] =@[Кодводителя] AND [Дата рождения]=@[Датарождения]";

                    SqlCommand cmdUpd = new SqlCommand(strUpd, cn);

                    cmdUpd.Parameters.AddWithValue("@Кодводителя", Convert.ToInt32(textBox1.Text));
                    cmdUpd.Parameters.AddWithValue("@Датарождения", dateTimePicker1.Value.ToString("yyyy-MM-dd"));
                    cmdUpd.Parameters.AddWithValue("@Категорияводительскогоудостоверения", textBox3.Text);
                    cmdUpd.Parameters.AddWithValue("@Семейноеположение", textBox4.Text);
                    cmdUpd.Parameters.AddWithValue("@ФамилияИмяОтчествоводителя", textBox5.Text);

                    int res = cmdUpd.ExecuteNonQuery();
                    if (res == 1)
                    {
                        string strSQL;
                        MessageBox.Show("Запись успешно отредактированна");

                        if (checkBox1.Checked == true)
                        {
                            strSQL = "SELECT * FROM Водители WHERE [Код водителя]='" + textBox1.Text + "'";
                            SqlDataAdapter da1 = new SqlDataAdapter(strSQL, cn);
                            DataTable t1 = new DataTable("Водители");
                            da1.Fill(t1);
                            dataGridView1.DataSource = t1;

                        }
                        if (checkBox2.Checked == true)
                        {
                            strSQL = "SELECT * FROM Водители WHERE [Фамилия Имя Отчество водителя]= '" + textBox5.Text + "'";
                            SqlDataAdapter da2 = new SqlDataAdapter(strSQL, cn);
                            DataTable t2 = new DataTable("Водители");
                            da2.Fill(t2);
                            dataGridView1.DataSource = t2;
                        }
                        if (checkBox3.Checked == true)
                        {
                            strSQL = "SELECT * FROM Водители WHERE [Дата рождения]= '" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "'";
                            SqlDataAdapter da3 = new SqlDataAdapter(strSQL, cn);
                            DataTable t3 = new DataTable("Водители");
                            da3.Fill(t3);
                            dataGridView1.DataSource = t3;
                        }
                        if (checkBox4.Checked == true)
                        {
                            strSQL = "SELECT * FROM Водители WHERE [Категория водительского удостоверения]= '" + textBox3.Text + "'";
                            SqlDataAdapter da4 = new SqlDataAdapter(strSQL, cn);
                            DataTable t4 = new DataTable("Водители");
                            da4.Fill(t4);
                            dataGridView1.DataSource = t4;
                        }
                        if (checkBox5.Checked == true)
                        {
                            strSQL = "SELECT * FROM Водители WHERE [Семейное положение]= '" + textBox4.Text + "'";
                            SqlDataAdapter da5 = new SqlDataAdapter(strSQL, cn);
                            DataTable t5 = new DataTable("Водители");
                            da5.Fill(t5);
                            dataGridView1.DataSource = t5;
                        }

                    }

                    else
                        MessageBox.Show("Запись не отредактирована!");

                    cn.Close();

                }

                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);

                }
    }
            }
        }
    }


这篇关于'int'附近的语法不正确。必须声明标量变量“@”。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆