1

sysdate()Androidデバイスからサーバー文字列に送信しています。問題は、コードが mysql データベースに何も挿入しないことです。コラムfirstDATETIME. 私は mysql ワークベンチを使用しINSERT INTO test (first) VALUES (sysdate());ています。ワークベンチに入力すると動作します。

<%
     String t = request.getParameter("time");
            Connection connection = null;
            PreparedStatement pstatement = null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            int updateQuery = 0;
            if (t != null) {
                if (t != "" ) {
                    try {
                        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
                        Statement st = connection.createStatement();
                        String queryString1 = "INSERT INTO test (first) VALUES (?)";
                        pstatement = connection.prepareStatement(queryString1);
                        pstatement.setString(1, t);
                        updateQuery = pstatement.executeUpdate();
                        if (updateQuery != 0) {
                            response.setStatus(400);
                        }
                    } catch (Exception ex) {
                        out.println(ex);

                    } finally {
                        pstatement.close();
                        connection.close();
                    }
                } 
            } 
        %>
4

1 に答える 1

1

私のJavaは非常にさびていますが、誰も飛び込んでいないので、これを試してみます. JDBC では日付が扱いにくいことを覚えています。

ここに 2 つの試行がありますが、テストするためのセットアップが現在ないため、テストされていないことに注意してください。

アプローチ #1 : 日付を文字列として渡し、MySQL に変換させます。INSERTあなたの声明の代わりに:

String queryString1 = "INSERT INTO test (first) VALUES (?)";

... これを試して:

String queryString1 = "INSERT INTO test (first) VALUES (str_to_date(?, '%Y-%m-%d %H:%i:%s'))";

アプローチ #2 :PreparedStatement.setDateの代わりに使用しPreparedStatement.setStringます。これは、アプローチ 1 で提案されたものではなく、元の INSERT ステートメントを使用することに注意してください。これは、文字列の日付tを に変換してから に変換することを意味java.util.Datejava.sql.dateます。

あなたのこれの代わりにset

pstatement.setString(1, t);

... これを試して:

// Change string to java.util.Date
java.util.Date dt = new java.text.SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss", java.util.Locale.ENGLISH).parse(t);

// Change java.util.Date to java.sql.Date
java.sql.Date sqlDt = new java.sql.Date(dt.getTime());

// Set parameter as a date
pstatement.setDate(1, sqlDt);
于 2013-03-29T15:02:39.383 に答える