JDBC對MySQL數據庫的增刪改查

JDBC

JDBC是Java數據庫連接,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規範客戶端程序如何來訪問數據庫的應用程序接口,提供了諸如查詢和更新數據庫中數據的方法。JDBC也是Sun Microsystems的商標。我們通常說的JDBC是面向關係型數據庫的。

JDBC操縱數據庫的基本流程

在這裏插入圖片描述
①加載數據庫驅動

Class.forName(driverClass)//基本語法

//加載MySql驅動
Class.forName("com.mysql.jdbc.Driver");//低版本MySQL,如5.0,6.0版本 Class.forName("com.mysql.cj.jdbc.Driver");//高版本MySQL,如8.0版本

//加載Oracle驅動
Class.forName("oracle.jdbc.driver.OracleDriver")

②建立與數據庫的連接

java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://主機IP:端口號/數據庫名?serverTimezone=UTC","用戶名","用戶密碼");//語法

//建立本地數據庫test的連接
java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","isMySecret");

③發送操作語句

//創建對象
java.sql.Statement st=con.createStatement();
//發送sql語句,203Room必須是數據庫test的一個成員,結果保存在rs對象中
ResultSet rs=st.executeQuery(“select *from 203Room”);

④獲得操作結果

//第四步,提取結果中的數據
while(rs.next())
{
	System.out.println("username: "+rs.getString("username"));
	System.out.println("password: "+rs.getString("password"));
	System.out.println("realName: "+rs.getString("trueName"));
	System.out.println("gender: "+rs.getString("gender"));
}

⑤關閉連接

conn.close();

PS/*
另外值得注意的是在Tomcat中新建的web’app項目要將驅動放在WEB-INF的lib目錄錄下確保程序可以找到驅動
在這裏插入圖片描述
*/

一. 增

response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
try {
	String username=request.getParameter("username");
	String password=request.getParameter("password");
	String trueName=request.getParameter("trueName");
	String gender=request.getParameter("gender");
	
	//第一步裝載驅動
	Class.forName("com.mysql.cj.jdbc.Driver");
	
	//第二步,建立連接
	java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661");

	//第三步,執行sql語句
	String sql="insert into 203Room(username,password,trueName,gender) values(?,?,?,?)";
	//預編譯,減少SQL執行時間
	java.sql.PreparedStatement pst=conn.prepareStatement(sql);
	pst.setString(1,username);
	pst.setString(2,password);
	pst.setString(3,trueName);
	pst.setString(4,gender);
	
	int i = pst.executeUpdate();//執行插入
	
	//第四步查看
	response.getWriter().println("<h2>Insert sucessfully!</h2>");
	response.getWriter().println("click to check<a href='simpleQueryServlet'>simpleQueryServlet</a>");

	//第五步。關閉連接
	conn.close();
	
} catch (Exception e) {
	e.printStackTrace();
}	

插入結果
在這裏插入圖片描述

二. 刪

response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
try {
	String username=request.getParameter("username");
	String password=request.getParameter("password");
	
	//第一步裝載驅動
	Class.forName("com.mysql.cj.jdbc.Driver");
	
	//第二步,建立連接
	java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661");

	//第三步,執行sql語句
	String sql="delete from 203Room where username = ?";
	//預編譯,減少SQL執行時間
	java.sql.PreparedStatement pst=conn.prepareStatement(sql);
	pst.setString(1,username);
	
	int i = pst.executeUpdate();//執行修改
	
	//第四步查看
	response.getWriter().println("<h2>刪除成功</h2>");
	response.getWriter().println("click to check<a href='simpleQueryServlet'>simpleQueryServlet</a>");

	//第五步。關閉連接
	conn.close();
	
} catch (Exception e) {
	e.printStackTrace();
}	

刪除結果
在這裏插入圖片描述

三. 改

代碼實現

response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
try {
	String username=request.getParameter("username");
	String newPassword=request.getParameter("newPassword");
	
	//第一步裝載驅動
	Class.forName("com.mysql.cj.jdbc.Driver");
	
	//第二步,建立連接
	java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661");

	//第三步,執行sql語句
	String sql="update 203Room set password = ? where username = ?";
	//預編譯,減少SQL執行時間
	java.sql.PreparedStatement pst=conn.prepareStatement(sql);
	pst.setString(1,newPassword);
	pst.setString(2,username);
	
	int i = pst.executeUpdate();//執行修改
	
	//第四步查看
	response.getWriter().println("<h2>Updata sucessfully!</h2>");
	response.getWriter().println("click to check<a href='simpleQueryServlet'>simpleQueryServlet</a>");

	//第五步。關閉連接
	conn.close();
	
} catch (Exception e) {
	e.printStackTrace();
}

修改結果
在這裏插入圖片描述

四. 查

1.簡單查詢

try {
	//第一步裝載驅動
	Class.forName("com.mysql.cj.jdbc.Driver");
	
	//第二步,建立連接
	java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","******");

	//第三步,執行sql語句
	java.sql.Statement st=conn.createStatement();
	String sql="select *from 203Room";
	ResultSet rs=st.executeQuery(sql);
	
	//第四步,提取結果中的數據
	while(rs.next())
	{
		System.out.println("username: "+rs.getString("username"));
		System.out.println("password: "+rs.getString("password"));
		System.out.println("realName: "+rs.getString("trueName"));
		System.out.println("gender: "+rs.getString("gender"));
	}

	//第五步。關閉連接
	conn.close();
} catch (Exception e) {
	e.printStackTrace();
}

查詢結果
在這裏插入圖片描述
在這裏插入圖片描述

2.帶參查詢

try {
	String username=request.getParameter("username");
	//第一步裝載驅動
	Class.forName("com.mysql.cj.jdbc.Driver");
	
	//第二步,建立連接
	java.sql.Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","MySQLqdl0661");

	//第三步,執行sql語句
	String sql="select *from 203Room where username=?";
	//預編譯,減少SQL執行時間
	java.sql.PreparedStatement pst=conn.prepareStatement(sql);
	pst.setString(1,username);//設置參數1爲post拿到的username
	ResultSet rs=pst.executeQuery();//返回username的行集合
	
	//第四步,提取結果中的數據
	while(rs.next())
	{
		System.out.println("username: "+rs.getString("username"));
		System.out.println("password: "+rs.getString("password"));
		System.out.println("realName: "+rs.getString("trueName"));
		System.out.println("gender: "+rs.getString("gender"));
	}	
	//第五步。關閉連接
	conn.close();
} catch (Exception e) {
	e.printStackTrace();
}

查詢結果
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章