Search code examples
sqlsql-servervisual-studio-2017sqlconnection

"Incorrect syntax near ')'."


I have a program that is to take a couple inputs and do stuff to them then store them in a local database (using SQL Server).

I have the following code for the connection:

SqlConnection con = new SqlConnection();
con.ConnectionString = ("Data Source=DESKTOP-PGHMM6M;Initial Catalog=LocalUsers;Integrated Security=True");

con.Open();

String st = "INSERT INTO data(Username,Password, Hash, EncryptedPassword)";
SqlCommand cmd = new SqlCommand(st, con);

cmd.Parameters.AddWithValue("@Username", Username);
cmd.Parameters.AddWithValue("@Password", textBox2.Text);         
cmd.Parameters.AddWithValue("@Hash", savedPasswordHash);
cmd.Parameters.AddWithValue("@EncryptedPassword", FinalEncryptedPass);

cmd.ExecuteNonQuery();

con.Close();

It fails at the cmd.ExecuteNonQuery(); line, and throws this exception :

Incorrect syntax near ')'

I'm not even really sure where to start, as I haven't done any of this since college (107 years ago). Can anybody help me get started? I've been scouring but nothing seems to be working.


Solution

  • The VALUES clause will need to be within the insert statement string. I would also recommend a using block instead of directly opening the SqlConnection, as will automatically close the connection upon exit whether by completion or error. While technically there isn't a difference between using String and string as in your command text, String would most often be used to reference a class while string is typically used in object references such as the case here.

    string connectionString = @"YourConnectionString";
    
    string st = "INSERT INTO data(Username,Password, Hash, EncryptedPassword) VALUES (@Username, @Password, @Hash, @EncryptedPassword)";
    
    using (SqlConnection con = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand(st1, con);
    
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", textBox2.Text);
        cmd.Parameters.AddWithValue("@Hash", savedPasswordHash);
        cmd.Parameters.AddWithValue("@EncryptedPassword", FinalEncryptedPass);
    
        con.Open();
        cmd.ExecuteNonQuery();
    }