Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
" 12345, 'Cocomo', 'Joe', 3001, "
+ "'Caribbean', 'Miami', '1/1/2004', '3')";
statement1.executeUpdate(insertStatement);
System. out. println("Table TicketRequest populated");
//Закрыть соединение
dbConn. close();
}catch(ClassNotFoundException cnfe)
{
System. err. println(cnfe);
}
catch (SQLException sqle)
{
System. err. println(sqle);
}
catch (Exception e)
{
System. err. println(e);
}
}//main
}//class
При создании записей различаются только SQL запросы.
insertStatement = "INSERT INTO TicketRequest VALUES(" +
" 13, 'Beasley', 'Demarcus', 3001, "
+ "'Caribbean', 'Miami', '1/1/2004', '3')";
Надо быть очень внимательным при создании таких запросов. Малейшая ошибка может очень трудно обнаруживаться.
А теперь выполняем запрос:
statement1.executeUpdate(insertStatement);
Открытие и закрытие соединения с базой данных идентично предыдущему примеру. Посмотрим в MS Access, как выглядит наша таблица. Рис. 19.8 показывает нашу таблицу.
Рис. 19.8.Заполнение таблицы с помощью JDBC и SQL.

Отметим, что все данные имеют тот тип, который мы указали при создании таблицы.
Изменение данных в таблице с помощью JDBC
Другая часто встречающаяся задача – обновление или изменение данных в таблице. Мы создадим приложение с графическим интерфейсом для изменения данных в таблице. Листинг 19.6 содержит код такого приложения.
Листинг 19.6 Файл TestTableAlteration. java
/*
* TestTableAlteration. java
*/
import javax. swing.*;
import java. awt.*;
import java. awt. event.*;
import java. sql.*;
public class TestTableAlteration extends JFrame implements ActionListener
{
//Информация о customer
private int custID;
private String lastName;
private String firstName;
// Информация о cruise
private int cruiseID;
private String destination;
private String port;
private String sailing;
private int numberOfTickets;
JTextField tfCustID;
JTextField tfLastName;
JTextField tfFirstName;
JTextField tfCruiseID;
JTextField tfDestination;
JTextField tfPort;
JTextField tfSailing;
JTextField tfNumberOfTickets;
JLabel lCustID = new JLabel("CustID");
JLabel lLastName = new JLabel("LastName");
JLabel lFirstName = new JLabel("FirstName");
JLabel lCruiseID = new JLabel("CruiseID");
JLabel lDestination = new JLabel("Destination");
JLabel lPort = new JLabel("Port ");
JLabel lSailing = new JLabel("Sailing");
JLabel lNumberOfTickets = new JLabel("Number of Tickets");
JButton btnRetrieve;
JButton btnStore;
java. sql. Connection dbConn = null;
Statement statement1 = null;
String createStatement;
String insertStatement;
/** Конструктор TestTableAlteration */
public TestTableAlteration()
{
tfCustID = new JTextField(20);
tfLastName = new JTextField(20);
tfFirstName = new JTextField(20);
tfCruiseID = new JTextField(20);
tfDestination = new JTextField(20);
tfPort = new JTextField(20);
tfSailing = new JTextField(20);
tfNumberOfTickets = new JTextField(15);
btnRetrieve = new JButton("Retrieve");
btnStore = new JButton("Store");
this. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
p1.add(lCustID);
p1.add(tfCustID);
p1.add(lLastName);
p1.add(tfLastName);
p1.add(lFirstName);
p1.add(tfFirstName);
p1.add(lCruiseID);
p1.add(tfCruiseID);
p1.add(lDestination);
p1.add(tfDestination);
p1.add(lPort);
p1.add(tfPort);
p1.add(lSailing);
p1.add(tfSailing);
p1.add(lNumberOfTickets);
p1.add(tfNumberOfTickets);
p1.add(btnRetrieve);
p1.add(btnStore);
btnRetrieve. addActionListener(this);
btnStore. addActionListener(this);
getContentPane().add(p1);
setTitle("Altering Table Data");
setBounds( 100, 100, 315, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
if (ae. getActionCommand().equals("Retrieve"))
{
System. out. println("btnRetrieve clicked");
if (tfCustID. getText().equals(""))
System. out. println("please enter a CustID");
else
{
System. out. println("CustID = " + tfCustID. getText());
this. custID = Integer. parseInt(tfCustID. getText());
retrieveFromDB();
tfLastName. setText(lastName);
tfFirstName. setText(firstName);
tfCruiseID. setText(Integer. toString(cruiseID));
tfDestination. setText(destination);
tfPort. setText(port);
tfSailing. setText(sailing);
tfNumberOfTickets. setText(Integer. toString(numberOfTickets));
}
}
if (ae. getActionCommand().equals("Store"))
{
System. out. println("btnStore clicked");
if (tfCustID. getText().equals(""))
System. out. println("please enter a CustID");
else
{
updateDB();
}
}
}
public String updateDB()
{
try
{
// ============== Make connection to database ==================
connectToDB();
lastName = tfLastName. getText();
firstName = tfFirstName. getText();
String strCruiseID = tfCruiseID. getText();
destination = tfDestination. getText();
port = tfPort. getText();
sailing = tfSailing. getText();
String strNumberOfTickets = tfNumberOfTickets. getText();
//Обновить Last Name
String updateString =
"Update TicketRequest " +
"SET lastName = '" + lastName + "' " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
//Обновить First Name
updateString =
"Update TicketRequest " +
"SET firstName = '" + firstName + "' " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
//Обновить Cruise ID
updateString =
"Update TicketRequest " +
"SET cruiseID= " + strCruiseID + " " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
//Обновить destination
updateString =
"Update TicketRequest " +
"SET destination = '" + destination + "' " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
//Обновить port
updateString =
"Update TicketRequest " +
"SET port = '" + port + "' " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
//Обновить sailing
updateString =
"Update TicketRequest " +
"SET sailing = '" + sailing + "' " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
//Обновить number of tickеts
updateString =
"Update TicketRequest " +
"SET numberOfTickets = " + strNumberOfTickets + " " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
return "Successful Update";
} catch (Exception e)
{
System. out. println("Exception was thrown: " + e. getMessage());
return "UnSuccessful Retrieval";
} finally
{
try
{
if (statement1 != null)
statement1.close();
if (dbConn!= null)
dbConn. close();
} catch (SQLException sqle)
{
System. out. println("SQLException during close(): " +
sqle. getMessage());
}
}
}
public String retrieveFromDB()
{
try
{
// ============== Make connection to database ==================
connectToDB();
//Получить данные
String getString =
"SELECT * FROM TicketRequest " +
"WHERE CustID = " + custID;
ResultSet results = statement1.executeQuery(getString);
lastName = "record not found";
firstName = "";
cruiseID = 0;
destination = "";
port = "";
sailing = "";
numberOfTickets = 0;
while (results. next())
{
lastName = results. getString("lastName");
firstName = results. getString("firstName");
cruiseID = results. getInt("cruiseID");
destination = results. getString("destination");
port = results. getString("port");
sailing = results. getString("sailing");
numberOfTickets = results. getInt("numberOfTickets");
}
return "Successful Retrieval";
} catch (Exception e)
{
System. out. println("Exception was thrown: " + e. getMessage());
return "UnSuccessful Retrieval";
} finally
{
try
{
if (statement1 != null)
statement1.close();
if (dbConn!= null)
dbConn. close();
} catch (SQLException sqle)
{
System. out. println("SQLException during close(): " +
sqle. getMessage());
}
}
}
private void connectToDB()
{
try
{
// ============== Make connection to database ==================
//Загрузить класс драйвера
Class. forName("sun. jdbc. odbc. JdbcOdbcDriver");
//Указать источник ODBC
String sourceURL = "jdbc:odbc:TicketRequest";
//Получить соединение с базой данных
dbConn = DriverManager. getConnection(sourceURL);
//Все в порядке
System. out. println("The database connection is " + dbConn);
System. out. println("Making connection...\n");
//Создать предложение
statement1 = dbConn. createStatement();
} catch (Exception e)
{
System. out. println("Exception was thrown: " + e. getMessage());
}
}
public static void main(String[] args)
{
TestTableAlteration tta = new TestTableAlteration();
}
}
}
Этот пример имеет графический интерфейс, поэтому мы реализуем интерфейс:
public class TestTableAlteration extends JFrame implements ActionListener
Мы определили две кнопки:
JButton btnRetrieve;
JButton btnStore;
Метод actionPerformed() вызывается при нажатии на кнопки:
public void actionPerformed(ActionEvent ae)
{
Кнопка "Retrieve" загружает custID, а затем вызывает метод retrieveFromDB() для получения данных из базы.
if (ae. getActionCommand().equals("Retrieve"))
{
System. out. println("btnRetrieve clicked");
if (tfCustID. getText().equals(""))
System. out. println("please enter a CustID");
else
{
System. out. println("CustID = " + tfCustID. getText());
this. custID = Integer. parseInt(tfCustID. getText());
retrieveFromDB();
После завершения метода данные из полей класса загружаются в текстовые поля:
tfLastName. setText(lastName);
tfFirstName. setText(firstName);
tfCruiseID. setText(Integer. toString(cruiseID));
tfDestination. setText(destination);
tfPort. setText(port);
tfSailing. setText(sailing);
tfNumberOfTickets. setText(Integer. toString(numberOfTickets));
Кнопка "Store" вызывает метод updateDB():
if (ae. getActionCommand().equals("Store"))
{
System. out. println("btnStore clicked");
if (tfCustID. getText().equals(""))
System. out. println("please enter a CustID");
else
{
updateDB();
}
}
}
Метод updateDB() сохраняет данные в базу:
public String updateDB()
Мы соединяемся с базой:
connectToDB();
Затем мы переносим значения из текстовых полей в поля класса:
lastName = tfLastName. getText();
firstName = tfFirstName. getText();
String strCruiseID = tfCruiseID. getText();
destination = tfDestination. getText();
port = tfPort. getText();
sailing = tfSailing. getText();
String strNumberOfTickets = tfNumberOfTickets. getText();
Наконец, мы обновляем все данные, потому что не знаем, какие поля изменились. Можно было бы определять, какие поля изменились, но для небольших таблиц это не имеет смысла делать:
//Обновить Last Name
String updateString =
"Update TicketRequest " +
"SET lastName = '" + lastName + "' " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
.
.
.
// Обновить number of tickеts
updateString =
"Update TicketRequest " +
"SET numberOfTickets = " + strNumberOfTickets + " " +
"WHERE CustID = " + custID;
System. out. println(updateString);
statement1.executeUpdate(updateString);
Результат запуска этой программы показан на рис. 19.9.
Рис. 19.9. Обновление данных с помощью JDBC и SQL.

Заметим, что Last Name и number of tickets изменились.
Заключение
В этой главе мы посмотрели, как можно создавать приложения на Java для работы с базами данных. Мы научились создавать таблицы, заполнять их, изменять в них данные.
В заключение мы создали приложение с графическим интерфейсом для замены данных в базе.
Контрольные вопросы
Чем база данных отличается от обычного файла? Что такое JDBC? Как с помощью SQL добавлять данные в базу? Как создать таблицу в базе данных?Упражнения
1: | Создайте таблицы с информацией об автомобилях.. |
2: | Заполнить таблицы данными об автомобилях.. |
3: | Создать приложение с графическим интерфейсом, который позволит получать и изменять данные в таблицах. |
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


