Nieprawidłowa składnia w pobliżu słowa kluczowego „użytkownik”


Błąd jest następujący:

Wystąpił nieobsługiwany wyjątek typu „System.Data.SqlClient.SqlException” w System.Data.dll

Informacje dodatkowe: nieprawidłowa składnia w pobliżu słowa kluczowego „Użytkownik”.

Kod wygląda tak:
using System; 
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SqlConnection conn;
SqlDataAdapter GameDA;
SqlDataAdapter DetailDA;
DataSet DetailDS;
SqlCommandBuilder cmdBuilder;
SqlDataAdapter UserDA;
SqlDataAdapter AdministratorDA;
SqlDataAdapter OrderDA;
DataSet OrderDS;
SqlCommandBuilder cmdBuilder2; public Form1()
{
InitializeComponent();
conn = new SqlConnection("Data Source=HOME-AC284121FE\\SQLEXPRESS;Initial Catalog=GameShop;Integrated Security=SSPI;");
SqlCommand command1 = new SqlCommand("SELECT * FROM Game", conn);
GameDA = new SqlDataAdapter(command1);
SqlCommand command2 = new SqlCommand("SELECT * FROM Detail WHERE GameID = @GameID", conn);
command2.Parameters.Add(new SqlParameter("@GameID", SqlDbType.Int));
DetailDA = new SqlDataAdapter(command2);
SqlCommand command3 = new SqlCommand("SELECT * FROM Administrator", conn);
AdministratorDA = new SqlDataAdapter(command3);
SqlCommand command4 = new SqlCommand("SELECT * FROM User", conn);
UserDA = new SqlDataAdapter(command4);
SqlCommand command5 = new SqlCommand("SELECT * FROM Order WHERE UserID = @UserID", conn);
command5.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Int));
OrderDA = new SqlDataAdapter(command5);
cmdBuilder2 = new SqlCommandBuilder(OrderDA);
cmdBuilder = new SqlCommandBuilder(DetailDA);
} private void Form1_Load(object sender, EventArgs e)
{
DetailDS = new DataSet();
OrderDS = new DataSet(); GameDA.Fill(DetailDS, "Game");
**UserDA.Fill(OrderDS, "User");// <-- Error**
AdministratorDA.Fill(OrderDS, "Administrator"); comboBoxGame.DisplayMember = "Name";
comboBoxGame.ValueMember = "GameID";
comboBoxGame.DataSource = DetailDS.Tables["Game"]; dataGridView.DataSource = DetailDS.Tables["Detail"];
dataGridView.Columns["GameID"].Visible = false;
dataGridView.Columns["DetailID"].Visible = false;
} private void comboBoxGame_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxGame.SelectedValue != null)
if (DetailDS.Tables.Contains("Detail"))
{
DetailDS.Tables["Detail"].Clear();
}
DetailDA.SelectCommand.Parameters[0].Value = comboBoxGame.SelectedValue;
DetailDA.Fill(DetailDS, "Detail");
} private void buttonExit_Click(object sender, EventArgs e)
{
this.Close();
} }
}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

„Użytkownik” to

słowo zastrzeżone
http://msdn.microsoft.com/en-u ... .aspx
w SQL Server, więc musisz użyć

rozdzielany identyfikator
http://msdn.microsoft.com/en-u ... .aspx
aby połączyć się ze swoim stołem. Spróbuj
SqlCommand command4 = new SqlCommand("SELECT * FROM [User]", conn);

zamiast tego ... lub zmień nazwę tabeli na coś, co nie jest zarezerwowane.
(Zdecydowanie zalecam również zachowanie dostępu do danych poza kodem interfejsu użytkownika, odpowiednie pozbywanie się połączeń itd., Ale to zupełnie inna sprawa).
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użytkownik
to funkcja wbudowana w SQL Server. Nazwa musi być ujęta w nawiasy kwadratowe:
[Użytkownik]
. Dotyczy to wszystkich nazw tabel i innych nazw zdefiniowanych przez użytkownika, które przypadkowo kolidują ze słowami kluczowymi, zastrzeżonymi słowami lub nazwami wbudowanymi, więc podejrzewam, że będziesz musiał również wpisać
[Order]
, ponieważ < code> ORDER to słowo kluczowe SQL.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się