如何在Java中将变量作为字符串插入MySQL中

时间:2011-07-04 15:00:27

标签: java mysql string

假设我有两个变量并且我知道它们的值:

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只是字符而不是变量。

那么如何将变量而不是它们的值放入String中,然后在需要时检索它们的值。

我问这个问题的原因是因为我想把一个ArrayList放在MySQL的一行中。如果是这样,我认为我需要将float []作为字符串放在一个字段中。请告诉我将有另一种方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

通常,您可以使用以下命令创建包含占位符的字符串:

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)

(这个是在房子里,但未经测试)

答案 1 :(得分:0)

这样的事情:

// 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"