Java: Запись данных в БД

320
13 июля 2017, 00:11

Сделал метод, который записывает данные в БД.

Данные уже заполнены, а как сделать, чтобы они вводились с клавиатуры при вызове метода?

void nameProvider() throws SQLException {
    statement.execute(
        "insert into provider.infortaionaboutprovider (city, mail_adress, bank_detals, rating) values (\"Polsk\", \"mailardess@mail.ru\", 22222, 1)");
}
Answer 1

Попробуй так:

  try {
    // create a mysql database connection
    String myDriver = "org.gjt.mm.mysql.Driver";
    String myUrl = "jdbc:mysql://localhost/test";
    Class.forName(myDriver);
    Connection conn = DriverManager.getConnection(myUrl, "root", "");
    // create a sql date object so we can use it in our INSERT statement
    Calendar calendar = Calendar.getInstance();
    java.sql.Date startDate = new 
    java.sql.Date(calendar.getTime().getTime());
    // the mysql insert statement
    String query = " insert into users (first_name, last_name, date_created, 
    is_admin, num_points)"  + " values (?, ?, ?, ?, ?)";
    // create the mysql insert preparedstatement
    PreparedStatement preparedStmt = conn.prepareStatement(query);
    preparedStmt.setString (1, "Barney");
    preparedStmt.setString (2, "Rubble");
    preparedStmt.setDate   (3, startDate);
    preparedStmt.setBoolean(4, false);
    preparedStmt.setInt    (5, 5000);
    // execute the preparedstatement
    preparedStmt.execute();
    conn.close();
  }
  catch (Exception e)
  {
    System.err.println("Got an exception!");
    System.err.println(e.getMessage());
  }

Почитай тут: http://alvinalexander.com/java/java-mysql-insert-example-preparedstatement

Answer 2

Если количество и порядок вводимых данных известен и не меняется, то будет правильным написать метод который принимает эти самые данные и обрабатывает.

Для обработки данных введенных с клавиатуры в реальном времени, в случае работы с консолем, легче использовать System.in предварительно обернув в java.util.Scanner

    private void foo(){
        Scanner scanner = new Scanner(System.in);
        do {
            System.out.print("City: ");
            String city = scanner.next();
            System.out.print("Email: ");
            String email = scanner.next();
            System.out.print("BankDetails: ");
            String details = scanner.next();
            System.out.print("Rating: ");
            int rating = scanner.nextInt();
            save(city, email, details, rating);
            System.out.println("\nHit 'q' to quit...");
        } while(!scanner.next().trim().equals("q"));
    }
    private void save(String city, String email, String bankDetails, int rating) {
        String sql = "insert into provider.infortaionaboutprovider (" +
                     "city, mail_adress, bank_detals, rating) values (?, ?, ?, ?)";
        try (PreparedStatement statement = conn.prepareStatement(sql)) {
            statement.setString(1, city);
            statement.setString(2, email);
            statement.setString(3, bankDetails);
            statement.setInt(4, rating);
            statement.execute();
        } catch (SQLException e) {
            logger.warning(e.getMessage());
        }
    }
READ ALSO
Можно ли удалить только выбранные поля из строки MySQL

Можно ли удалить только выбранные поля из строки MySQL

Можно ли как то удалить значение выбранного столбца из строки MySQLДопустим есть таблица users и в нем поля id, username, regdate, image

255
Call to a member function prepare() on a non-object

Call to a member function prepare() on a non-object

Почему мне показывает следующую ошибку, хотя запрос правильный?

252
Правильное построение логики БД и php

Правильное построение логики БД и php

На данный момент имеется: БД:

222
Работа с консолью браузера вкладка network

Работа с консолью браузера вкладка network

Как вытащить информацию из консоли хрома с вкладки network не используя browsermob-proxy ? Нужно считывать response

272