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();
}
查詢結果