2011-07-04 4 views
-3

でのMySQLの中に文字列として変数を挿入する方法:私は2つの変数を持っていると私はそれらの値を知っていると仮定したJava

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に挿入し、必要に応じてその値を取得する方法。

私がこの質問をした理由は、MySQLのArrayListを1行に入れたいからです。もしそうなら、私はfloat []を文字列として1つのフィールドに入れる必要があると考えました。別の方法があると教えてください。このような

+1

ですから、文字列を学びたいです連結? –

+0

"v1 = 11.1、v2 = 22.2"のようなものなら、手動で行う以外に方法はありません。これらのヴァールがクラスメンバーの場合は、名前と値を取得するためにリフレクションを使用するかもしれませんが、それはあなたのスキルを超えていると考えています。 – Thomas

+0

あなたがここで何を求めているのか分かりにくいので、あなたの質問に分かりやすく答えるのは難しいです。 – Flexo

答えて

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が望ましい入力と文字のエスケープの問題に対抗します。

EDIT:要求ごと、別の方法(それはしかし、より良いかどうかわからない):

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

(この1つは家にあるが、テストされていない)

+0

+1、問題のあるSQL PreparedStatementの与えられたSQLバックグラウンドを賢明に言及するためです。 – Flexo

+0

は、些細な 'v1 +"、 "+ v2'連結にも言及する価値があります... – Flexo

+0

ありがとう、' String result = String.format( "%s、%s"、v1、v2); '私。 – wzb5210

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" 
+0

ご返信ありがとうございます。しかし、私はあなたを誤解するかもしれないと思う。私が 'v1'と 'v2'を文字列に入れる前に、私はその価値を知らなかった。私はそれらを文字列に入れて、私が必要とするときに私の価値を取り戻すことができます。 – wzb5210

関連する問題