本篇文章为你整理了JDBC的详细讲解和注意事项(jdbc基本操作)的详细内容,包含有jdbc使用流程 jdbc基本操作 jdbc详细教程 jdbc的dao JDBC的详细讲解和注意事项,希望能帮助你了解 JDBC的详细讲解和注意事项。
引入德鲁伊的jar包
加入配置文件(properties),要放在src目录下,根据一些提示信息去做相应的配置,如果是web程序,需要用properties
JDBCUtilsByDruid工具类连接数据库
package com.yc.ajax.Utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
* 连接数据库
public class JDBCUtilsByDruid {
private static DataSource ds;
//目前我们是javaweb方式启动,所以要获得src目录下的文件,需要用类加载器
properties.load(JDBCUtilsByDruid.class.getClassLoader().getResourceAsStream("druid.properties"));
ds = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
//编写getConnection方法
public static Connection getConnection() throws SQLException {
return ds.getConnection();
//关闭连接, 老师再次强调: 在数据库连接池技术中,close 不是真的断掉连接
//而是把使用的Connection对象放回连接池
public static void close(ResultSet resultSet, Statement statement, Connection connection) {
try {
if (resultSet != null) {
resultSet.close();
if (statement != null) {
statement.close();
if (connection != null) {
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
import com.yc.ajax.Utils.JDBCUtilsByDruid;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
* 根据连接的数据库 用德鲁伊去处理改查
* @param T
public class BasicDAO T {//泛型指定具体类型 需要创建一个javabean
private QueryRunner qr = new QueryRunner();
//开发通用的 dml 针对任意的表
public int update(String sql, Object... parameters) {
Connection connection = null;
try {
connection = JDBCUtilsByDruid.getConnection();
int update = qr.update(connection, sql, parameters);
return update;
} catch (SQLException e) {
throw new RuntimeException();
} finally {
JDBCUtilsByDruid.close(null, null, connection);
//返回多个对象(即查询的结果是多行), 针对任意表
* @param sql sql 语句,可以有 ?
* @param clazz 传入一个类的 Class 对象 比如 Actor.class
* @param parameters 传入 ? 的具体的值,可以是多个
* @return 根据 Actor.class 返回对应的 ArrayList 集合
public List T queryMulti(String sql, Class T clazz, Object... parameters) {
Connection connection = null;
try {
connection = JDBCUtilsByDruid.getConnection();
List T query = qr.query(connection, sql, new BeanListHandler T (clazz), parameters);
return query;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
JDBCUtilsByDruid.close(null, null, connection);
//查询单行结果 的通用方法
public T querySingle(String sql, Class T clazz, Object... parameters) {
Connection connection = null;
try {
connection = JDBCUtilsByDruid.getConnection();
return qr.query(connection,sql, new BeanHandler T (clazz), parameters);
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
JDBCUtilsByDruid.close(null, null, connection);
//查询单行单列的方法,即返回单值的方法
public Object queryScalar(String sql, Object... parameters) {
Connection connection = null;
try {
connection = JDBCUtilsByDruid.getConnection();
return qr.query(connection,sql,new ScalarHandler(),parameters);
} catch (SQLException e) {
throw new RuntimeException(e);
}finally {
JDBCUtilsByDruid.close(null,null,connection);
}
UserDao 然后再去继承 BasicDao 范型是一个javabean
package com.yc.ajax.dao;
import com.yc.ajax.entity.User;
public class UserDao extends BasicDAO User {
}
UserServict 去创建UserDao的实例然后咱根据业务逻辑调用里面改或者查的方法
import com.yc.ajax.dao.UserDao;
import com.yc.ajax.entity.User;
public class UserServlet {
private UserDao userDao = new UserDao();
public User getUserByName(String username){
User user = userDao.querySingle("select * from user1 where name=?", User.class, username);
return user;
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("CheckUserServlet .. 被调用");
response.setContentType("text/html;charset=utf-8");
//接收 ajax 提交的数据
String username = request.getParameter("username");
// if ("king".equals(username)){
// User king = new User(100, "king", "king@qq.com", "12345");
// String user_king = new Gson().toJson(king);
// response.getWriter().write(user_king);
// }else {
// response.getWriter().write("");
User userByName = userServlet.getUserByName(username);
if (userByName != null){ //说明用户已经存在
//返回一个json
Gson gson = new Gson();
String s = gson.toJson(userByName);
response.getWriter().write(s);
}else {
response.getWriter().write("");
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
以上就是JDBC的详细讲解和注意事项(jdbc基本操作)的详细内容,想要了解更多 JDBC的详细讲解和注意事项的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。