Mysql Sysdate作为字符串

Mysql Sysdate作为字符串,mysql,jsp,prepared-statement,sysdate,Mysql,Jsp,Prepared Statement,Sysdate,我正在从android设备向服务器发送字符串sysdate()。问题是代码没有向mysql数据库插入任何内容。列first是DATETIME。我正在使用mysql工作台,当我键入INSERT-INTO-test(first)值(sysdate())时在工作台中,它可以工作 <% String t = request.getParameter("time"); Connection connection = null; Prepare

我正在从android设备向服务器发送字符串
sysdate()
。问题是代码没有向mysql数据库插入任何内容。列
first
DATETIME
。我正在使用mysql工作台,当我键入
INSERT-INTO-test(first)值(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();
                    }
                } 
            } 
        %>

我的Java非常生锈,但没有其他人加入,所以我将尝试一下。我记得约会对JDBC来说很棘手

这里有两次尝试,但请注意它们未经测试,因为我现在没有测试它们的设置

方法#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'))";
// 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);

方法#2:使用
PreparedStatement.setDate
而不是
PreparedStatement.setString
。请注意,这使用的是原始的INSERT语句,而不是方法1中建议的语句。这意味着将字符串date
t
转换为
java.util.date
,然后转换为
java.sql.date

而不是为您的
集合

pstatement.setString(1, t);
。。。试试这个:

String queryString1 = "INSERT INTO test (first) VALUES (str_to_date(?, '%Y-%m-%d %H:%i:%s'))";
// 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);

我的Java非常生锈,但没有其他人加入,所以我将尝试一下。我记得约会对JDBC来说很棘手

这里有两次尝试,但请注意它们未经测试,因为我现在没有测试它们的设置

方法#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'))";
// 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);

方法#2:使用
PreparedStatement.setDate
而不是
PreparedStatement.setString
。请注意,这使用的是原始的INSERT语句,而不是方法1中建议的语句。这意味着将字符串date
t
转换为
java.util.date
,然后转换为
java.sql.date

而不是为您的
集合

pstatement.setString(1, t);
。。。试试这个:

String queryString1 = "INSERT INTO test (first) VALUES (str_to_date(?, '%Y-%m-%d %H:%i:%s'))";
// 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);

当它来自Android时,日期是什么样子的?换句话说,变量
t
的值是多少?是2013年3月29日吗<代码>2013-03-29
?另外,您是否真的有一个控制台来查看
捕获中输出的异常?您可以检查它。它看起来像
sysdate()
。我不转换它…当它来自Android时,日期是什么样子的?换句话说,变量
t
的值是多少?是2013年3月29日吗<代码>2013-03-29
?另外,您是否真的有一个控制台来查看
捕获中输出的异常?您可以检查它。它看起来像
sysdate()
。我不知道…不客气!我已经好几年没有使用Java了(很遗憾,因为我喜欢它),所以我担心我的答案可能弊大于利。我很高兴这有帮助:)不客气!我已经好几年没有使用Java了(很遗憾,因为我喜欢它),所以我担心我的答案可能弊大于利。我很高兴这有帮助:)