一、 JDBC:通过java与数据库交互。
-
注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
-
取得数据库连接对象Connection
Connection conn=DriverManager.getConnection(url,user,password);
-
创建SQL执行对象
4.1 编写sql语句sql = ...;
4.2 获得语句执行对象
PrepardStatement ps = conn.getprepareStatement(sql);
-
执行SQL命令,并返回结果集
4.1 增删改操作
ps.executeUpdate();
4.2 返回结果集
ResultSet rs = ps.executeQuery();
-
处理结果集
while(rs.next()){ rs.getString(int i); }
-
依次关闭结果集
rs.close(); ps.close(); conn.close();
二、数据源
因为每次都要创建数据库连接,使用完后又关闭,所以很耗资源。
数据源:每当需要连接时,就从连接池中获取,使用完之后,放回连接池
使用C3P0数据源
使用步骤:
- 导入jar包
mysql-connector-java-5.1.36-bin.jar
c3p0-0.9.1.2.jar
- 编写配置文件
src/c3p0-config.xml
- 调用api
// 创建c3p0数据源(连接池)
DataSource ds = new ComboPooledDataSource();
获取连接对象:ds.getConnection()
把连接对象放回连接池中:conn.close();
三、登录案例
- 导入jar包
- 创建项目基本包框架
- 前端页面
- 创建servlet:
创建一个类继承HttpServlet
在web.xml中注册servlet
<servlet>
<servlet-name>helloservlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloservlet</servlet-name>
<url-pattern>/helloservlet</url-pattern>
</servlet-mapping>
- 重写doGet() doPost()方法
doPost方法调用doGet方法
servlet:主要用来获取请求中的数据,调用业务逻辑,最后分发转向
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String password = request.getParameter("password");
try {
UserService us = new UserServiceImpl();
User user = us.findUser(name,password);
if(user==null){
response.getWriter().print("name or password error");
}else{
response.getWriter().print("welcome:"+user.getName()+"");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
完整代码示例:
import java.sql.DriverManager;
import java.sql.Exception;
public class jdbctest{
public static void main(String[] args) {
query();
}
public static void query() {
java.sql.Connection conn = null;
try{
//1.加载数据驱动
class.forName("com.mysql.jdbc.Driver");
//2.获得数据库连接
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc_db", "root", "1234");
//3.创建语句
String sql = "select * from UserTbl";
//返回一个执行sql的句柄
java.sql.Statement stmt = conn.createStatement();
//4.执行查询
java.sql.ResultSet rs = stmt.executeQuery(sql);
//5.遍历结果
while(rs.next) {
int id = re.getInt(1);
String username = re.getString(2);
String password = rs.getString(3);
int age = rs.getInt(4);
System.out.println(id + username + password + age);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
//6.关闭数据库连接
if(conn != null) {
try{
conn.close();
}catch(SQLException e) {
conn = null;
e.printStackTrace();
}
}
}
}
}
四、mvc开发模式
m: model 模型 一般都是javabean
v: view 视图 jsp
c: controller 核心控制 servlet