2016-08-10 2 views
0

Wollen Sie einfach Windows Forms Schnittstelle verwenden, um Daten in die Datenbank einzufügen. Ich denke, der Code ist richtig, aber es gibt mir eine Fehlermeldung "Falsche Syntax in der Nähe des Keywords 'Benutzer'."Windows Forms und SQL cmd Syntaxfehler

image with tables names here

try 
{ 
      string cmdString = @"insert into User (userName, userEmail, userBalance, userTickets) VALUES (@userName, @userEmail, @userBalance, @userTickets)" + 
           "insert into Account (accountName, accountPassword) VALUES (@accountName, @accountPassword)"; 

      // Connection 
      SqlConnection con = new SqlConnection("i dont know if is safe to show the con string...but i know its right"); 
      SqlCommand cmd = new SqlCommand(cmdString, con); 
      con.Open(); 

      cmd.Parameters.Add("@userName", SqlDbType.NVarChar).Value = txtUserName.Text; 
      cmd.Parameters.AddWithValue("@userEmail", SqlDbType.NVarChar).Value = txtemail.Text; 
      cmd.Parameters.AddWithValue("@userBalance", SqlDbType.Money).Value = 100; 
      cmd.Parameters.AddWithValue("@userTickets", SqlDbType.Int).Value = 3; 
      //cmd.Parameters.AddWithValue("@accountID", null); 
      cmd.Parameters.AddWithValue("@accountName", SqlDbType.NVarChar).Value = txtUserName.Text; 
      cmd.Parameters.AddWithValue("@accountPassword", SqlDbType.NVarChar).Value = txtPassword.Text; 

      // Execute command 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
      //MessageBox.Show("Data saved!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 

      Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

Kann jemand mir eine Hand geben?

Antwort

1

User ist ein reserviertes Wort.

Sie müssen es in eckigen Klammern umschließen:

string cmdString = @"insert into [User] (userName, userEmail, userBalance, userTickets) VALUES (@userName, @userEmail, @userBalance, @userTickets)" + 
        "insert into Account (accountName, accountPassword) VALUES (@accountName, @accountPassword)"; 

diese SQL es als Tabellenname zu behandeln sagen tun und nicht das reservierte Wort.

+0

Wooow ... wirklich? So frustrierend und doch so einfach zu lösen. Danke. –

+0

@Manuel Costa Sie sollten auch darauf achten, Ihre Befehle mit einem Semikolon ';' zu beenden. Und möglicherweise möchten Sie sogar einen Zeilenumbruch zwischen ihnen. – shawnt00