java servletからMySQLに情報を登録したいのです。
ホームページのフォームに名前と番号の二つの列があってname[1],bango[1]...のようになっています。
それを番号があるものだけをMySQLに登録したいのですがうまくいきません。
以下に試しに作ったservletを書きます。
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class program2 extends HttpServlet{
private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS";
//private static final String CONTENT_TYPE = "text/html; charset=EUC_JP";
//private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
private String server;
private String db;
private String user;
private String pass;
private String url;
private Connection con = null;
//グローバル変数の初期化
public void init() throws ServletException{
/*変数の初期化*/
server = "localhost"; //MySQLサーバ名またはIPアドレス
db = "database"; //データベース名
user = "root"; //MySQLユーザ名
pass = "data"; //MySQLパスワード
/* 必要であればオプションの指定 */
url = "jdbc:mysql://" + server + ":3306/" + db
+ "?useUnicode=true&characterEncoding=Shift_JIS"; //JDBC URL Shift_JIS
/*DB初期処理*/
try{
/* JDBCドライバのロード */
Class.forName("com.mysql.jdbc.Driver").newInstance();
/* MySQLサーバ接続 */
con = DriverManager.getConnection(url, user, pass);
} catch (SQLException e){
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
}
/*HTTP Get リクエストの処理*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException{
//エンコード
request.setCharacterEncoding("Shift_JIS");
//FORMからの第一次受け渡し
String name = "naoki";
String jikoku = "1200";
//for文の始まり
for(int i = 1; name != null; i++){
//if文の始まり
if(jikoku != null){
//FORMからの第一次受け渡し
name = request.getParameter("name["+ i +"]");
jikoku = request.getParameter("jikoku["+ i +"]");
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
Statement stmt = null;
ResultSet rs = null;
try{
/* 検索するSQL文を作成 */
String sql = "INSERT INTO table1 (eki,jikoku) VALUES ('"+name+"','"+jikoku+"') ";
/* Statementオブジェクトの生成とクエリの実行 */
stmt = con.createStatement();
stmt.executeUpdate(sql);
/* 切断 */
stmt.close();
} catch (SQLException e){
out.println("<h3>登録に失敗しました</h3>");
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
} finally{
/* finallyを使って資源の解放 */
try{
if (stmt != null){
stmt.close();
stmt = null;
}
} catch (Exception e){
e.printStackTrace();
}
}
}//if文の終了
}//for文終了
}
/*サーブレットインスタンスが破棄されるときに、サーブレットコンテナに最後に1度呼び出される*/
public void destroy(){
/* 切断 */
try{
if (con != null){
con.close();
con = null;
}
} catch (Exception e){
e.printStackTrace();
}
}
}
お礼
データベース登録時に、テーブルの作成ミスが有りました。 Tomcatのログから分かりました。 ご回答有難うございました。
補足
アドバイスありがとうございます。 同環境で他のデータベースを作成し、そこにinsert処理をするサブレットでデータの登録処理をすることは出来ました。 このスケジュールプログラムからのinsert処理がうまく行っていないようです。