Началось создание 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. Если да, как выглядит этот синтаксис?
У этого 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():
Просто используйте 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, заваленные вокруг вашего кода. Если вам нужно что-то более элегантное, вы можете быстро взглянуть на спящий режим - он скрывает от вас всю хакерство, а также довольно легко настроить.