2016-06-28 3 views
2

Так как кажется, что я стараюсь, чтобы узнать, как работать с SQL и Java жесткий путь мой вопрос:Использовать переменную в кавычках вывода?

Можно ли использовать переменную в кавычки?

Я знаю, что если вы используете выход вы можете работать так:

System.out.println(_name + " "+_points+ " "+_ID); 

Есть ли способ, чтобы сделать все это только один КАВЫЧКУ пару? Что-то вроде этого:

System.out.println("_name _points _ID"); 

Если да, то как же я отмечаю их так, что компилятор знает, что это переменная, что он должен напечатать?

Причина, почему я хочу знать, что это просто, я пытаюсь использовать executeUpdate

stmt.executeUpdate("INSERT INTO usertable VALUES("+_name+")"); 

и хочу его без добавления знаков там.

+0

Не знаю, в чем проблема с stmt.executeUpdate ("INSERT INTO usertable VALUES (" + _ name + ")"); ? –

+3

Вам лучше использовать 'PreparedStatement'. Образец [*** ответ здесь ***] (http://stackoverflow.com/a/11322672/767881) –

+0

[*** Использование PreparedStatement ***] (http://docs.oracle.com/javase /tutorial/jdbc/basics/prepared.html) –

ответ

2

Нет, вы не можете использовать переменную внутри строкового литерала. Однако есть пара вариантов.

Первый путь вы сейчас делаете это с помощью конкатенации с + знак:

String query = "INSERT INTO table VALUES(" + name + ")"; 

Другой способ заключается в использовании string.Format

String query = String.format("INSERT INTO table VALUES(%s)", name); 

Но предпочтительным метод SQL, чтобы избежать атак SQL-инъекций, используется PreparedStatement:

String query = "INSERT INTO table VALUES(?)"; 
PreparedStatement statement = con.prepareStatement(query); 
statement.setString(1, name); 
statement.executeUpdate(); 
0

Если у вас есть переменная и вы хотите передать ее в свой запрос с цитатой, просто добавьте кавычки в свою команду. Если кавычки одинарные кавычки не нужно усиков тогда, но если это так, вы Гона необходимость:

stmt.executeUpdate("INSERT INTO usertable VALUES('"+_name+"')"); 
               ^
               |_Just add the quotes inside the 
                string 

Если это двойная кавычка (который я думаю, что вряд ли дело) вам нужно усиков тогда. Scaping способ сказать компилятору, что эта конкретная строка является специальным

stmt.executeUpdate("INSERT INTO usertable VALUES(\""+_name+"\")"); 
               ^
               |_See the slash before the double quote? 

Но так как вы учитесь, вы должны научиться, как правильно это сделать, потому что использование переменного с цитатами сделают ваш код склонного к SQL Injection

Таким образом, лучший способ сделать это - использовать Подготовленные заявления и язык willl позаботится о котировках для вас.Было бы:

String sql = "INSERT INTO usertable VALUES (?)" 
preparedStatement = dbConnection.prepareStatement(sql); 
preparedStatement.setString(1, "name you want"); 

Смотрите здесь полный пример: http://www.mkyong.com/jdbc/jdbc-preparestatement-example-select-list-of-the-records/

+0

Я не думаю, что OP означал, что ему нужны литературные цитаты. – explv

+0

Хммм, я думаю, ты прав, и я неправильно понял его @arizzle. Он хочет делать что-то вроде PHP. Хорошо, пусть это будет, это может быть ссылка. Я поддержал ваш ответ. Спасибо, что указали это. –

0

Вы можете использовать PreparedStatement:

Пример:

запрос:

private static String SQL_INSERT_NEW_RULE = "INSERT INTO Table (A, B) VALUES (?, ?)"; 

, то вы можете поставить их вот так:

PreparedStatement pStmt=null; 
pStmt = conn.prepareStatement(SQL_INSERT_NEW_RULE); 
int index = 1; 
pStmt.setString(index++, "value for A"); 
pStmt.setLong(index++, "Value for B"); 
Смежные вопросы