Как вставить значения в базу данных Microsoft Access через JDBC? - PullRequest
0 голосов
/ 18 апреля 2009

Я создал буквенную игру на Java, и мне нужно включить в нее функцию рекордов, используя базу данных Microsoft Access через JDBC. Таблица в базе данных содержит следующие поля

Table Name: Scores

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

Мне нужен оператор SQL для вставки значений из Java для обновления таблицы базы данных Microsoft Access.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2009

Попробуйте что-то вроде следующего:

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();
    }
}

Сначала необходимо настроить ODBC DSN на панели управления Windows. Он находится в Панель управления -> Администрирование -> Источники данных .

В дополнение к вашему основному вопросу, я также придерживаюсь мнения Русса Кэма о том, что вам, вероятно, следует пересмотреть схему базы данных, чтобы использовать соответствующие типы столбцов для столбцов «Время» и «Оценка» и, возможно, для точности и сложности. В нормализованном дизайне «Имя» также будет внешним ключом (что-то вроде player_id) для другой таблицы, которая будет содержать детали для каждого игрока.

1 голос
/ 18 апреля 2009

для вставки

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

для ОБНОВЛЕНИЯ вам потребуется ПЕРВИЧНЫЙ КЛЮЧ в таблице баллов, чтобы вы могли обновить только конкретную запись (если вы не собираетесь обновить более одной записи). Я бы посоветовал иметь ПК на столе, независимо от того.

Кроме того, я заметил, что Сложность, Точность, Время и Оценка - это текстовые поля. Теперь я не знаю, на что похожа схема / дизайн вашей базы данных, но Сложность, Точность и Оценка кажутся мне числовыми в природа, а время звучит как дата / время. Посмотрите на MS Access (JET DB Engine) типы данных для получения дополнительной информации.

РЕДАКТИРОВАТЬ: взято из комментариев

Если посмотреть здесь , похоже, что лучший способ параметризации оператора SQL в JDBC - это написать хранимую процедуру ( подготовленный оператор ) с использованием JDBC API, а затем установите значения, которые необходимо вставить в качестве параметров в подготовленный оператор.

Вот учебник JDBC по обновлению и учебник по вставке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...