JDBC
JDBC是Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
JDBC操纵数据库的基本流程
①加载数据库驱动
Class
.forName(driverClass
)
Class
.forName("com.mysql.jdbc.Driver");
Class
.forName("oracle.jdbc.driver.OracleDriver")
②建立与数据库的连接
java
.sql
.Connection conn
=DriverManager
.getConnection("jdbc:mysql://主机IP:端口号/数据库名?serverTimezone=UTC","用户名","用户密码");
java
.sql
.Connection conn
=DriverManager
.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC","root","isMySecret");
③发送操作语句
java
.sql
.Statement st
=con
.createStatement();
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");
String sql
="insert into 203Room(username,password,trueName,gender) values(?,?,?,?)";
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");
String sql
="delete from 203Room where username = ?";
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");
String sql
="update 203Room set password = ? where username = ?";
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","******");
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");
String sql
="select *from 203Room where username=?";
java
.sql
.PreparedStatement pst
=conn
.prepareStatement(sql
);
pst
.setString(1,username
);
ResultSet rs
=pst
.executeQuery();
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();
}
查询结果
(另外贴一下数据连接池的配置方式)