使用 java 和 sql INSERT Query 在 MS 访问中插入字符串类型变量和日期类型变量

Posted

技术标签:

【中文标题】使用 java 和 sql INSERT Query 在 MS 访问中插入字符串类型变量和日期类型变量【英文标题】:Insert String type variables and a date type variable in MS access using java and sql INSERT Query 【发布时间】:2013-01-17 10:21:24 【问题描述】:

我发布了一个关于如何将字符串日期转换为要添加到 access 数据库中的日期/时间字段的问题:这里是链接

how to insert in a date/time ms access field using java sql INSERT query

我找到了我在这里使用的解决方案,这是我的代码

        if(b==c.t.addR)
        String n=Integer.toString(4);
        String t=c.t.titlefield.getText();
        String d=c.t.datefield.getText();
        String p=c.t.progressfield.getText();
        String pr=c.t.pselection;
        String s="Open";
        SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a");

        try 
            date = df.parse(d);
            String query = "INSERT into Records (Deadline) Values(?)";
            PreparedStatement ps  = c.b.con.prepareStatement(query);

            ps.setTimestamp(1,new java.sql.Timestamp(date.getTime()));
            ps.executeUpdate();

        catch (Exception er) 
            // TODO Auto-generated catch block
            er.printStackTrace();
        


        try 
            c.b.st.executeUpdate("INSERT into Records (Title,Progress,Priority,Status) VALUES('"+t+"','"+p+"','"+pr+"','"+s+"') ");
            JOptionPane.showMessageDialog(null, "Record Added");
         catch (SQLException e1) 
            // TODO Auto-generated catch block
            e1.printStackTrace();
        


    

现在出现的问题是,日期被添加到单独的记录中,而其他字段(如标题、进度等)被添加到另一个记录中!!! 如何在单个记录中插入日期和其他字符串字段。 请用几行代码来说明!!!以前解决方案的修改将非常有帮助,谢谢!!

【问题讨论】:

【参考方案1】:

如何在单个记录中插入日期和其他字符串字段

使其成为一个插入语句而不是 2 个。

   String query = "INSERT into Records (Deadline,Title,Progress,Priority,Status) Values(?,?,?,?)"
 PreparedStatement ps  = c.b.con.prepareStatement(query);

                ps.setTimestamp(1,new java.sql.Timestamp(date.getTime()));
                ps.setString(2,t);
                ps.setString(3,p);
                ps.setSring(4,pr);
                ps.setString(5,s);
                ps.executeUpdate();

【讨论】:

但是我将如何准备声明,,,请说明!!【参考方案2】:

您可以通过执行一条 sql 语句来插入 int oa 单条记录。您只需将列添加到语句中并使用准备好的语句设置它们的值。这是一种更安全的插入方式,而不是连接字符串。

if(b==c.t.addR)
    String n=Integer.toString(4);
    String t=c.t.titlefield.getText();
    String d=c.t.datefield.getText();
    String p=c.t.progressfield.getText();
    String pr=c.t.pselection;
    String s="Open";
    SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm a");

    try 
       date = df.parse(d);
       String query = "INSERT into Records (Deadline,Title,Progress,Priority,Status)" 
           + "Values(?, ?, ?, ?,?)";

       PreparedStatement ps  = c.b.con.prepareStatement(query);

       ps.setTimestamp(1,new java.sql.Timestamp(date.getTime()));
       ps.setString(2,t);
       ps.setString(3,p);
       ps.setSring(4,pr);
       ps.setString(5,s);
       ps.executeUpdate();

        catch (Exception er) 
          // TODO Auto-generated catch block
          er.printStackTrace();
        


【讨论】:

以上是关于使用 java 和 sql INSERT Query 在 MS 访问中插入字符串类型变量和日期类型变量的主要内容,如果未能解决你的问题,请参考以下文章

使用java和SQL查询INSERT INTO将新记录插入MS访问[关闭]

使用 java 和 sql INSERT Query 在 MS 访问中插入字符串类型变量和日期类型变量

Java中last_insert_id的使用

JAVA中用 SQL语句操作小结

Java + SQL:INSERT INTO 不起作用[关闭]

Spring Batch 无法获取 last_insert_id();嵌套异常是 java.sql.SQLException: Lock wait timeout exceeded;