使用JDBC數據庫mysql5.5的增刪查改
導入JDBC
- JDBC:Java Database Connection
- 創建directry,命令lib
- 複製jdbc到lib裏
- 右鍵jdbc,
add as library
創建pacage,class
- src目錄下創建package-- com
- com下創建類 Test
- 注意命名駝峯式
使用SQLyog桌面操作
- 建立數據庫
user
- 創建表
userInfo
- 然後添加數據
JDBC進行mysql查詢連接
JDBC連接數據庫,並進行數據庫查詢
數據庫操作七步走:
- 加載驅動
- 創建連接
- 寫sql
- 得到statement對象執行sql
- 得到結果集
- 處理結果集
- 關閉資源
- 之後1-2將封裝到util的getConnection()裏
- 6將改成ArrayList,每一個數據存到實體類userinfo中
- 7封裝到util的close()裏
//1.加載驅動
Class.forName("com.mysql.jdbc.Driver");
//2.創建連接
Connection connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
//這裏的user對應的之前創建的數據庫名
//user,password爲數據庫的賬號和密碼
System.out.println("創建連接成功!");
//3.寫sql
String sql="select * from userinfo";
//4.得到statement對象執行sql
PreparedStatement statement=connection.prepareStatement(sql);
//5.得到結果集
ResultSet res= statement.executeQuery();
//6.處理結果集
while(res.next()){
System.out.println(res.getInt(1));
System.out.println(res.getString(2));
System.out.println(res.getString(3));
}
//7.關閉資源
res.close();
statement.close();
connection.close();
- 查看執行結果是否成功,如果有錯,進行差錯,可能是賬號密碼不對,mysql8和mysql5的jdbc連接url方式也不一樣,以及數據庫名、表名是否正確等
創建Util
但是如果我們要繼續寫插入、刪除等操作時,又要重複寫很多代碼,所以我們建立了Util這個包,裏面封裝getConnection和close。
封裝getConnection
public static Connection getConnection(){ //static 就不需要new了
Connection connection=null;
try {
//1.加載驅動
Class.forName("com.mysql.jdbc.Driver");
//2.創建連接
connection= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
System.out.println("創建連接成功!");
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
封裝close
public static void close(ResultSet res, Statement statement,
Connection connection){
if (res!=null){
try {
res.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
創建bean
實體類和數據庫對應
創建實體類
- 構造方法
- 屬性
- get,set方法
- toString()
public class UserInfo {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
創建dao
持久層,數據庫的增刪查改
public class UserInfoDao {
public ArrayList<UserInfo> findAll(){
ResultSet res=null;
PreparedStatement statement=null;
Connection connection=null;
List<UserInfo> list=new ArrayList<>(); //添加ArrayList存儲每個數據
try {
// //1.加載驅動
// Class.forName("com.mysql.jdbc.Driver");
// //2.創建連接
// connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
// System.out.println("創建連接成功!");
connection= DBUtil.getConnection();
//3.寫sql
String sql="select * from userinfo";
//4.得到statement對象執行sql
statement=connection.prepareStatement(sql);
//5.得到結果集
res= statement.executeQuery();
//6.處理結果集
while(res.next()){
UserInfo userInfo=new UserInfo();
userInfo.setId(res.getInt(1));
userInfo.setUsername(res.getString(2));
userInfo.setPassword(res.getString(3));
list.add(userInfo);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//7.關閉資源
DBUtil.close(res,statement,connection);
}
return (ArrayList<UserInfo>) list;
}
/*
* 添加數據
* */
public void add(){
Connection connection =null;
PreparedStatement statement=null;
try {
connection= DBUtil.getConnection();
String sql = "INSERT INTO userinfo (username,password) VALUES(?,?)";
statement=connection.prepareStatement(sql);
statement.setString(1,"xiaowang");
statement.setString(2,"123");
statement.executeUpdate();
System.out.println("添加成功");
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(null,statement,connection);
}
}
/*
* 更改數據
* */
public void update(){
Connection connection =null;
PreparedStatement statement=null;
try {
connection=DBUtil.getConnection();
String sql = "update userinfo set password='456' where id=3";
statement=connection.prepareStatement(sql);
statement.executeUpdate();
System.out.println("修改成功");
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.close(null,statement,connection);
}
}
/*
* 刪除數據
* */
public void delete(){
Connection connection =null;
PreparedStatement statement=null;
try {
connection=DBUtil.getConnection();
String sql= "delete from userinfo where id=3";
statement=connection.prepareStatement(sql);
statement.executeUpdate();
System.out.println("刪除成功");
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(null,statement,connection);
}
}
}
主函數
public class Test {
public static void main(String[] args) {
UserInfoDao userInfoDao=new UserInfoDao();
ArrayList<UserInfo> list=userInfoDao.findAll(); //查詢數據庫中的結果
System.out.println(list); //輸出
userInfoDao.add(); //添加一條數據
ArrayList<UserInfo> list1=userInfoDao.findAll();//查看添加後的所有數據
System.out.println(list1);
}
}