【问题标题】:How do I Insert values into a Microsoft Access Database through JDBC?如何通过 JDBC 将值插入 Microsoft Access 数据库?
【发布时间】:2009-04-17 22:26:56
【问题描述】:

我用 Java 创建了一个字母游戏,我需要通过 JDBC 使用 Microsoft Access 数据库在其中包含一个高分函数。数据库中的表包含以下字段

Table Name: Scores

Name       (Text)
Difficulty (Text)
Characters (Number)
Accuracy   (Text)
Time       (Text)
Score      (Text)

我需要一条 SQL 语句从 Java 中插入值以更新 Microsoft Access 数据库表。

【问题讨论】:

    标签: sql ms-access jdbc


    【解决方案1】:

    尝试以下方法:

    String dataSourceName = "my_ODBC_DSN_name";
    String username = "username";
    String password = "password";
    String url = "jdbc:odbc:" + dataSourceName;
    
    Connection con = null;
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      con = DriverManager.getConnection(url, username, password);
    
      PreparedStatement pst = con.prepareStatement("INSERT INTO Scores "
               + "(Name, Difficulty, Characters, Accuracy, Time, Score) "
               + "VALUES (?, ?, ?, ?, ?, ?)");
    
      pst.setString(1, "Name String");
      pst.setString(2, "Difficulty String");
      pst.setInt(3, 20);
      pst.setString(4, "Acurracy String");
      pst.setString(5, "Time String");
      pst.setString(6, "Score String");
    
      pst.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } finally {
      if (con != null)
        try {
          con.close();
        } catch (SQLException e) {
          e.printStackTrace();
        }
    }
    

    您必须先在 Windows 控制面板中设置 ODBC DSN。它位于控制面板 -> 管理工具 -> 数据源

    除了您的主要问题之外,我还赞同 Russ Cam 的意见,即您可能应该修改您的数据库架构,以便为时间和分数列使用适当的列类型,并可能为准确性和难度使用适当的列类型。在规范化设计中,“姓名”也将是另一个表的外键(类似于 player_id),该表将保存每个玩家的详细信息。

    【讨论】:

      【解决方案2】:

      插入

      INSERT INTO Scores (Name, Difficulty, Characters, Accuracy, Time, Score)
      VALUES ('Name Value', 'Difficulty Value', 3, 'High', '10:30', '235');
      

      为了更新,您需要在 Scores 表中添加一个PRIMARY KEY,以便您只更新一条特定记录(除非您打算更新多条记录)。无论如何,我都会建议在桌面上进行 PK。

      此外,我注意到难度、准确性、时间和分数都是基于文本的字段 - 现在我不知道您的数据库架构/设计是什么样的,但难度、准确性和分数让我印象深刻自然,而时间听起来像日期/时间。请查看MS Access (JET DB Engine) Data types 了解更多信息。

      编辑:取自 cmets

      查看here,看起来在 JDBC 中参数化 SQL 语句的最佳方法是使用 JDBC API 编写一个存储过程准备好的语句),然后在准备好的语句中设置您需要作为参数插入的值。

      这是JDBC tutorial on updatinga tutorial on inserting

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多