アプリ版:「スタンプのみでお礼する」機能のリリースについて

早速ですがお願いします。例えば下のプログラムでのSQL文なのですが、配列str1[0]の中身”みかん”をINSERTしたいのですが、やりかたがわかりません。プログラミングの素人なので簡単な質問で申し訳ないですけど、どなたか教えてくれないでしょうか?
ちなみにこのプログラムでstr1[0]のところを直接みかんと入れたらデータベースに追加することはできました。
import java.sql.*;
class jdbc{
public static void main(String args[]){
String[] str1 = new String[1];
str1[0] = "みかん";
try{
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql:test";
String user = "";
String password = "";
System.out.println("URL :" + url);
System.out.println("USER :" + user);
System.out.println("PASSWORD :" + password);
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
int insertCount = stmt.executeUpdate("INSERT INTO shinamono (hinmei,nedan) VALUES ('+str1[0]+', 1500)");
if (insertCount >0){
System.out.println("追加しました");
}else{
System.out.println("追加できませんでした");
}
conn.commit();
stmt.close();
conn.close();
}catch(SQLException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}
}
なおエラーメッセージは次の通りです。
java.sql.SQLException: ERROR: column "みかん" does not exist
at org.postgresql.Connection.ExecSQL(Connection.java:533)
at org.postgresql.jdbc2.Statement.execute(Statement.java:294)
at org.postgresql.jdbc2.Statement.executeUpdate(Statement.java:78)
at jdbc.main(jdbc.java:21)

A 回答 (1件)

int insertCount = stmt.executeUpdate("INSERT INTO shinamono (hinmei,nedan) VALUES ('+str1[0]+', 1500)");


この行ですね。文字列を+で連結しているので
"insert into ...'" + str1[0] + "', 1500)"
にならないといけません。ちゃんと前半の終わりと後半の始まりのダブルクォートを入れましょう。

それとstr1が配列なのは、今後拡張するからでしょうか?(今のプログラムでは配列である必要がないので・・・)
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。うまく追加する事ができました。
>それとstr1が配列なのは、今後拡張するからでしょうか?
その予定です。HPから取ってきたデータを配列に入れて、そのデータをデータベースに追加するつもりでしたので、簡単な例でやり方をつかもうと思い質問させてもらいました。時間がなくて困っていたところ本当に助かりました。ありがとうございます。

お礼日時:2004/11/09 04:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!