Создано веб-приложение Java / приложение MySql

0

Началось создание Java-приложения для интерактивного взаимодействия с пользователем. Решил использовать базу данных MySql для хранения данных. Я уже создал таблицы с соответствующими/ожидаемыми типами данных. Мой вопрос: я всегда думал, что следующий шаг будет заключаться в создании хранимых процедур, таких как Search/Add/Delete/etc.., которые пользователь мог бы вызывать на странице. Поэтому в моем java-коде я мог бы просто вызвать процедуру ex:

CallableStatement cs;
Try 
{
  String outParam = cs.getString(1);     // OUT parameter

  // Call a procedure with one in and out parameter
  cs = connection.prepareCall("{call SearchIt(?)}");
  cs.registerOutParameter(1, Types.VARCHAR);
  cs.setString(1, "a string");
  cs.execute();
  outParam = cs.getString(1);    
}
catch (SQLException e) {
}

но если мое приложение не нуждается в хранимых процедурах, потому что действия пользователя будут достаточно простыми, чтобы выполнять простые утомительные запросы. Как я могу настроить свой код Java и Sql для его обработки. Могу ли я просто иметь инструкции "Выбрать" или "Обновить" в моем коде, чтобы манипулировать данными в моей базе данных MySQL. Если да, как выглядит этот синтаксис?

  • 0
    Не прямой ответ, но вы могли бы рассмотреть возможность использования Java Persistence API (JPA) вместо ручного кодирования взаимодействий вашей базы данных с SQL. Hibernate является хорошим вариантом для инструмента, который реализует спецификацию JPA.
Теги:

2 ответа

1
Лучший ответ

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

http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html

вот пример с этой страницы

PreparedStatement updateSales = connection.prepareStatement(
        "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75); 
updateSales.setString(2, "Colombian"); 
updateSales.executeUpdate():
0

Просто используйте Statement или PreparedStatement.

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html

Аналогично тому, что вы сделали, просто позвоните:

Statement stm = Connection.createStatement();

затем выполните ваш SQL:

stm.execute("SELECT * FROM MYTABLE");

возьмите результирующий набор и проверьте результаты.

Остерегайтесь, хотя - это плохо, насколько безопасно, - как упомянули другие, PreparedStatements немного более безопасны, но все же не 100%.

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

  • 1
    Вы также должны показать использование объектов PreparedStatement ...
  • 0
    Я согласен с Atk, вы должны использовать PreparedStatement и добавлять параметры, используя методы "set", предусмотренные для него.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню