я получил
SqlException: incorrect syntax near nvarchar
Incorrect syntax near 'ID'
в моем коде. Пожалуйста, может кто-нибудь помочь мне решить эту проблему?
Мой код
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.Sql;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
SqlCommand cmd;
SqlConnection con = new SqlConnection(@"Data Source=HAIER-PC;Initial Catalog=PDCS;Integrated Security=True");
SqlDataAdapter SDA;
private void button3_Click(object sender, EventArgs e)
{
con.Open();
cmd = new SqlCommand("INSERT INTO CusUtil(Customer ID, Age, Experience, Preferred Alternatives, Outer Shell, Base Gasket, Vent, Vent Type, Impact Absorbent Liner, Eyeport Gasket, Face Shield, Comfort Liner, Chin Strap, Weight, Estimated Price)
VALUES(@Customer ID, @Age, @Experience, @Preferred Alternatives, @Outer Shell, @Base Gasket, @Vent, @Vent Type, @Impact Absorbent Liner, @Eyeport Gasket, @Face Shield, @Comfort Liner, @Chin Strap, @Weight, @Estimated Price)", con);
cmd.Parameters.Add("@Customer ID", textBox1.Text);
cmd.Parameters.Add("@Age", comboBox1.SelectedItem.ToString());
cmd.Parameters.Add("@Experience", comboBox2.SelectedItem.ToString());
cmd.Parameters.Add("@Preferred Alternatives", comboBox3.SelectedItem.ToString());
cmd.Parameters.Add("@Outer Shell", textBox2.Text);
cmd.Parameters.Add("@Base Gasket", textBox3.Text);
cmd.Parameters.Add("@Vent", textBox4.Text);
cmd.Parameters.Add("@Vent Type", textBox5.Text);
cmd.Parameters.Add("@Impact Absorbent Liner", textBox6.Text);
cmd.Parameters.Add("@Eyeport Gasket", textBox7.Text);
cmd.Parameters.Add("@Face Shield",textBox8.Text);
cmd.Parameters.Add("@Comfort Liner",textBox9.Text);
cmd.Parameters.Add("@Chin Strap",textBox10.Text);
cmd.Parameters.Add("@Weight",textBox11.Text);
cmd.Parameters.Add("@Estimated Price",textBox12.Text);
cmd.ExecuteNonQuery();
con.Close();
}
}
}
Ошибка возникает на ExecuteNonQuery. Код просто сохраняет данные в базе данных SQL Server.
См. stackoverflow.com/questions/14190798/…
@Brad, если я правильно помню, в mysql символ - "
вы должны использовать backtics для имени столбца с пробелом `(в Windows это ALT + 96)
@ bradbury9 Может быть, MySQL уже давно не работает, но я знаю, что у вас не может быть пробелов. Спасибо
Вы понимаете, что у вас есть символ переноса строки после Initial в строке подключения? Это действительно работает?
Как вы думаете, зачем вам здесь пробелы "@Outer Shell"? Зачем вам такие совместные имена? вы можете сделать @1 @2 @3 . . . .. Если вы создали этот дизайн - измените его, но если он создан для вас, в качестве имени столбца - используйте [Impact Absorbent Liner]
Ребята, код явно для SQL SERVER. Он использует SqlCommand, а не MySqlCommand. Итак, все предложения клещи недействительны





В mysql использование пробела в имени столбца разрешено, но имя столбца должно быть заключено в обратные кавычки .. так что только для того, чтобы пользователь мог видеть команду с обратными ссылками
но, как было предложено Ууэрдо .. пробел в параметре не должен использоваться ... попробуйте использовать подчеркивание (или верблюжий регистр)
`
cmd = new SqlCommand("INSERT INTO CusUtil(`Customer ID`,
Age,Experience,`Preferred Alternatives`,`Outer Shell`,`Base
Gasket`,Vent,`Vent Type`,`Impact Absorbent Liner`,`Eyeport Gasket`
,`Face Shield`,`Comfort Liner`,`Chin Strap`,Weight,`Estimated
Price`)VALUES(@Customer_ID,@Age,@Experience,@Preferred_Alternatives,
@Outer_Shell,@Base_Gasket,@Vent,@Vent_Type,@Impact_Absorbent_Liner,
@Eyeport_Gasket,@Face_Shield,@Comfort_Liner,
@Chin_Strap,@Weight,@Estimated_Price)",con);
в SQLSERVER используйте [] вместо `
Вероятно, также необходимо удалить пробелы в токенах параметров.
На самом деле речь идет о сервере Sql, а не о моем sql
В sql server его [ ], а не ` `
Скобки удаляют синтаксическую ошибку, но возникает другая ошибка, т.е. должна быть объявлена скалярная переменная «@».
@annamjamshed, вы исправили пробелы в своих именованных параметрах ... в запросе и вызовах параметров добавления?
да, я сделал это
@annamjamshed Что ж, мы не сможем узнать, пока вы не исправите вопрос и не отправите код, который на самом деле не работает
Не могли бы вы добавить [] - квадратные скобки для столбца с пробелами и удалить пробелы в параметрах. это поможет, потому что все зависит от режима, который вы установили в mySQL
Это не ответ, а комментарий. И это не мой sql, а sql server. И да, нужны брекеты.
@ Т.С. да, его sql-сервер, я по ошибке поставил неправильный тег
Не думайте, что у вас могут быть пробелы в именах столбцов, по крайней мере, если они не окружены [] (по крайней мере, для MSSQL, и я думаю, что MYSQL то же самое). Я верю в эту ошибку: Идентификатор клиента После «Клиента» есть пробел, поэтому ваша ошибка обозначается «ID» как «плохая» из-за пробела.