準備されたステートメントを作成したいJSON列がありますが、ステートメントのパラメーターがリテラル文字列の中にあるため、どのように進むべきかわかりません。例えばJavaでmysqlのJSONデータ型にプリペアドステートメントを使用する方法は?
:
PreparedStatement stmt = myConn.prepareStatement("SELECT JSON_SET(new_friends, '$.?', '[?]') from friend_list where id = ?");
for (int i = 0; i < new_friends.size(); i++) {
String friend = new_friends.get(i);
// not sure what to put here
stmt.set....
stmt.set....
stmt.set(3, i);
}
誰もが何か提案がありますか?
私はあなたがJSON_SET関数の引数として文字列を渡すべきだと思っています。それは他の関数と大きく違っています: 'JSON_SET(new_friends、?、?)'。この場合、最初のプレースホルダは '' $ .whatever''の値を渡し、2番目のプレースホルダは '' [1,2,3,4,5] ''の値を渡します。それらは文字列でなければならないことに注意してください。少なくとも試してみてください。 –
MySQLのドキュメントを見てから、利用可能なJSON関連の関数のコレクションがあります。もしあなたが 'JSON_ARRAY_APPEND'を使うことができる配列に新しい値を追加するのであれば。 https://dev.mysql.com/doc/refman/5.7/ja/json-modification-functions.html –