JDBC的详细讲解和注意事项(jdbc基本操作)

  本篇文章为你整理了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: