Как вставить переменную как строку в MySQL в Java - PullRequest
0 голосов
/ 04 июля 2011

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

v1=11.1f
v2=22.2f

Таким способом я могу вставить строку "11.1,22.2" в поле.

PreparedStatement pstmt = null;
pstmt = conn.prepareStatement(insertQuery);
pstmt.setString(1, "11.1,22.2");

но что мне делать, если я не знаю их значений. Если я сделаю это следующим образом,

pstmt.setString(1, "v1,v2");

это также строка, однако v1 и v2 - это просто символы, но больше не переменные.

Итак, как поместить переменные вместо их значений в строку, а затем я получаю их значения, когда они мне нужны.

Причина, по которой я задал этот вопрос, заключается в том, что я хочу поместить ArrayList в один ряд в MySQL. Если так, то я подумал, что нужно поместить float [] в виде строки в одном поле. Пожалуйста, скажите мне, что будет другой способ сделать это.

Ответы [ 2 ]

1 голос
/ 04 июля 2011

В общем случае вы можете создавать строки с заполнителями, используя:

String result = String.format("%s,%s", v1, v2);

Если вы используете JDBC, вы можете использовать PreparedStatement, например:

PreparedStatement statement = connection.prepareStatement("UPDATE table1 SET column1 = ? WHERE column2 = ?");
int i = 1;
statement.setInt(i++, v1);
statement.setInt(i++, v2);
statement.executeUpdate();

Для создания запросов JDBC предпочтительным является PreparedStatement, поскольку он защищает вас от проблем, связанных с набором текста и экранированием символов.

РЕДАКТИРОВАТЬ: По запросу, альтернативный способ (хотя не знаю, лучше ли это):

MessageFormat form = new MessageFormat("{0},{1}");
Object[] args = new Object[] {v1, v2}; // achtung, auto-boxing
String result = form.format(args)

(этот находится в доме, но не проверен)

0 голосов
/ 04 июля 2011

Примерно так:

// float v1 = 11.1f;
// float v2 = 22.2f;
Hashtable ht = new Hashtable();
ht.put("v1",new Float(11.1));
ht.put("v2",new Float(22.2));
String a = "11.1,22.2";
Enumeration e = hashtable.keys();
while( e. hasMoreElements() ){ 
    String key = e.nextElement();       
    a.replace("/"+e.get(key)+"/",key);
}
System.out.println(a); // prints out "v1,v2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...