user4095898
user4095898

Reputation:

SQL insert into Quotes wrong

int rs = stmt.executeUpdate("INSERT INTO Leden VALUES (null,"+u+","+p+",'1')");

I'm getting the error

java.sql.SQLException: Unknown column '(the U variable)' in 'field list';

I know for sure it is 100% the "" but i can't seem to find it where it goes wrong any help is appreciated!

This is my whole method (I want to learn how to do it with a prepared statement)

    public static void connectionDB(String u, String p, String f){
{
    try {
        String username = "/////////";
        String password = "///////";
        String url = "///////////////";
        Connection connection = DriverManager.getConnection(url, username, password);
        Statement stmt = connection.createStatement();
        int rs = stmt.executeUpdate("INSERT INTO Leden VALUES (null,'"+u+"','"+p+"','1')");
    } catch (SQLException e) {
        e.printStackTrace();
    }

    System.out.println("Database connected!");
}

}

Upvotes: 2

Views: 140

Answers (3)

squiroid
squiroid

Reputation: 14017

It should be like

int rs = stmt.executeUpdate("INSERT INTO Leden VALUES (null,'"+u+"','"+p+"','1')");

Update:-

You can also look into prepared statements because

Prepared statements are much faster when you have to run the same statement multiple times, with different data. Thats because SQL will validate the query only once, whereas if you just use a statement it will validate the query each time.

Assuming fields are A,B,C,D; A is int and remains are strings

String insertTableSQL = "INSERT INTO Leden"
        + "(A,B,C,D) VALUES"
        + "(?,?,?,?)";

preparedStatement.setInt(1, 11);
preparedStatement.setString(2, "Hello");
preparedStatement.setString(3, "this");
preparedStatement.setString(4, "OP");]

preparedStatement .executeUpdate();

Upvotes: 5

frlan
frlan

Reputation: 7260

The issue is, that " is used in SQL for objects like columns or tables, whereas ' is used for strings. So in +u+, which seems to not exists in context of your query.

Your query itself should therefore look something like (given, that +u+ and +p+ are strings.

INSERT INTO Leden VALUES (null,'+u+','+p+','1')

If you need to have " inside your columns, it would read like

INSERT INTO Leden VALUES (null,'"+u+"','"+p+"','1')

Also I would recommend to specify the columns you are inserting to so it looks similar to:

INSERT INTO "Leden" ("col1", "col2", "col3", "col4") VALUES (null,'+u+','+p+','1')

This will prevent your query from failing when extending table definition by another column.

Also using prepared statements could be a good idea here, as it helps you preventing from e.g. SQL injections.

Upvotes: 0

Janitha Tennakoon
Janitha Tennakoon

Reputation: 906

It should be

int rs = stmt.executeUpdate("INSERT INTO Leden VALUES (null,'"+u+"','"+p+"','1')'");

Upvotes: 0

Related Questions