package JDBC;
import java.sql.*;
public class JDBCTest {
public static void main(String[] args){
//1.注册驱动(用不同品牌的驱动类来实现接口)
Connection conn = null;
Statement stmt = null;
ResultSet result_Set = null;
try{
Driver driver = new com.mysql.jdbc.Driver();//父类接口Driver ,MySQL的实现类Driver。
DriverManager.registerDriver(driver);//DriverManager是驱动管理器。
//2.获取连接
/*
什么是URL?
统一资源定位符
协议+IP地址+端口号port+资源名
协议:在传送数据,提前规定好数据传输格式,例如:http,https。。。
IP地址:网络定义某台计算机。
port端口号:定位这台计算机上的某个服务。
资源名:这个服务下的某个资源。
jdbc:mysql:// 是java程序和mysql通信的协议
localhost 这是本机的IP地址
3306 这是数据库的端口号
trade_for_book 这是mysql数据库的名称
*/
String url = "jdbc:mysql://localhost:3306/trade_for_book";
String user = "root";
String password = "002415";
conn = DriverManager.getConnection(url,user,password);//接口Connection
//3.获取数据库操作对象 (通过连接对象获取操作对象)、
//creatStatement() 创建一个Statement对象来将sql语句发送到数据库
stmt = conn.createStatement();
//4.执行sql语句 insert delete update
//executeUpdade 执行给定sql语句,该语句可能为INSERT UPDATE DELETE语句 返回值int为行计数
// String sql = "insert into user(phone,user_name,address,password,role) values(";
// sql = sql + "\"1045\",\"fuuuuc\",\"洋河\",\"002415\",\"买家\")";
// //System.out.println(sql);
// //转义字符为\而不是/
// int count = stmt.executeUpdate(sql);
// System.out.println(count);
/*
String updatesql = "update user set phone=\"1111\" where phone=\"1045\"";
int count = stmt.executeUpdate(updatesql);
System.out.println(count);*/
// String deletesql = "delete from user where phone=\"1111\"";
// int count =stmt.executeUpdate(deletesql);
// System.out.println(count);
//5.处理查询结果集
String selssql = "select * from user";
//executeQuery(String sql) 返回单个ResultSet 对象
result_Set = stmt.executeQuery(selssql);
//目前mysql中返回的结果集
// phone user_name address password role
// ------ --------- ------------ -------- --------
// 1001 rucks 三区201 123456 买家
// 1001 rucks 三区201 123456 卖家
// 1002 xx2 三区102 123456 卖家
// 1003 xx3 三区103 123456 卖家
// 1004 xx4 三区104 123456 卖家
// 1005 xx5 三区105 123456 卖家
// 1008 krise 江苏省 002415 卖家
// 1010 sza22 三区1楼 002415 买家
// 1011 sza5555 三区二楼 002415 买家
// 1012 6666 三区909 123456 买家
//调用ResultSet 接口的方法
while (result_Set.next()){//next()为光标行向下移动一位
String phone_ = result_Set.getString(1);//getString(index)取当前行的第一个数据。所有的数据均已String类型返回,不管数据库中的类型
//也可以与数据库类型一致 getInt() getDouble() 等
//也可以以列名查询 getString("phone")
String user_name_ = result_Set.getString(2);
String address_ = result_Set.getString(3);
String password_ = result_Set.getString(4);
String role_ = result_Set.getString(5);
System.out.println(phone_+" "+user_name_+" "+address_+" "+password_+" "+role_+" ");
}
}catch(SQLException e){
e.printStackTrace();
}finally {
//6.释放资源(若返回结果集,先关闭ResultSet)
//先释放Statement,再释放Connection
//分别进行try catch处理
if (result_Set != null){
try{
result_Set.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if (stmt != null){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if (conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
}