Trabajando con JDBC (MySQL - Prepared Statements)

CREATE TABLE users (dni varchar(20),
name varchar(20),
surname varchar(20),
phone varchar(20));
El código fuente del ejemplo es el siguiente:
UsersJDBC.java
package MySQL.exercice;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class UsersJDBC {
private java.sql.Connection con = null;
private final String url = "jdbc:mysql://";
private final String serverName= "127.0.0.1";
private final String portNumber = "3306";
private final String databaseName= "webshop";
private final String userName = "root";
private final String password = "1234";
private String getConnectionUrl(){
return url + serverName + ":" + portNumber + "/" + databaseName;
}
private void closeConnection(){
try{
if(con!=null) con.close();
con=null;
}
catch(Exception e){
e.printStackTrace();
}
}
public void displayAllUsers(){
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
if(con!=null){
Class.forName("org.gjt.mm.mysql.Driver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
Statement s = con.createStatement();
rs = s.executeQuery("select * from users");
System.out.println("Users:\n");
System.out.println("DNI Name Surname Phone Number");
while (rs.next()) {
System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4));
}
System.out.println("\n");
rs.close();
rs = null;
closeConnection();
}
else System.out.println("Error: Connection is not allowed");
}
catch(Exception e){
e.printStackTrace();
}
}
private java.sql.Connection getConnection(){
try{
Class.forName("org.gjt.mm.mysql.Driver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
if(con!=null)
System.out.println("Connection OK.");
}
catch(Exception e){
e.printStackTrace();
System.out.println("Error following getConnection() : " + e.getMessage());
}
return con;
}
public void addNewUser(String dni, String name, String surname, String phone) {
try{
con= this.getConnection();
if(con!=null){
Class.forName("org.gjt.mm.mysql.Driver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
PreparedStatement s = con.prepareStatement("INSERT INTO users(dni, name, surname, phone) VALUES (?,?,?,?)");
s.setString(1, dni);
s.setString(2, name);
s.setString(3, surname);
s.setString(4, phone);
s.execute();
closeConnection();
}
else System.out.println("Error: Connection is not allowed");
}
catch(Exception e){
e.printStackTrace();
}
}
public void SearchUserByDNI(String dni) {
java.sql.ResultSet rs = null;
try{
con= this.getConnection();
if(con!=null){
Class.forName("org.gjt.mm.mysql.Driver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
PreparedStatement s = con.prepareStatement("SELECT * FROM users WHERE dni = ?");
s.setString(1, dni);
rs = s.executeQuery();
System.out.println("Users:\n");
System.out.println("DNI\t Name\t Surname\t Phone Number");
while (rs.next()) {
System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4));
}
System.out.println("\n");
rs.close();
rs = null;
closeConnection();
}
else System.out.println("Error: Connection is not allowed");
}
catch(Exception e){
e.printStackTrace();
}
}
public void DeleteUserByDNI(String dni) {
try{
con= this.getConnection();
if(con!=null){
Class.forName("org.gjt.mm.mysql.Driver");
con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
PreparedStatement s = con.prepareStatement("DELETE FROM users WHERE dni = ?");
s.setString(1, dni);
s.execute();
closeConnection();
}
else System.out.println("Error: Connection is not allowed");
}
catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
UsersJDBC myDbTest = new UsersJDBC();
int p=0;
while (true) {
System.out.print("Menu\n");
System.out.print("Choose one option:\n");
System.out.print("\n");
System.out.print("1 - add new User\n");
System.out.print("2 - delete user\n");
System.out.print("3 - search user by name\n");
System.out.print("4 - show users list\n");
System.out.print("5 - Exit\n");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
p = Integer.parseInt(br.readLine());
}
catch (IOException ioe) {
System.out.println("IO error trying to read your value!");
}
switch (p) {
case 1:
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Enter DNI:\n");
String dni = br2.readLine();
System.out.print("Enter Name:\n");
String name = br2.readLine();
System.out.print("Enter Surname:\n");
String surname = br2.readLine();
System.out.print("Enter Phone number:\n");
String phone = br2.readLine();
myDbTest.addNewUser(dni, name, surname, phone);
}
catch (IOException ioe) {
System.out.println("IO error trying to read your value!");
}
break;
case 2:
BufferedReader br4 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Enter DNI:\n");
String dni = br4.readLine();
myDbTest.DeleteUserByDNI(dni);
}
catch (IOException ioe) {
System.out.println("IO error trying to read your value!");
}
break;
case 3:
BufferedReader br3 = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Enter DNI:\n");
String dni = br3.readLine();
myDbTest.SearchUserByDNI(dni);
}
catch (IOException ioe) {
System.out.println("IO error trying to read your value!");
}
break;
case 4:
myDbTest.displayAllUsers();
break;
case 5:
System.exit(1);
break;
}
}
}
}
La ejecución de la aplicación muestra lo siguiente:

Acordaros de cargar el external jar mysql-connector-java-5.0.8-bin.jar.
- Enlaces de interés:
http://www.jdbc-tutorial.com/jdbc-prepared-statements.htm
Comments
Post a Comment