connection getconnection()为什么要关闭_Java新手一定要掌握这项技术

本文介绍了JDBC技术的基础知识,强调了建立数据库连接的重要性。通过示例展示了如何创建和关闭数据库连接,以及事务处理的概念和ACID特性。还提醒读者在实际开发中,虽然JDBC会被MyBatis等框架取代,但了解JDBC对于理解和解决问题仍然至关重要。
摘要由CSDN通过智能技术生成

点击蓝字|关注我们

前言:尽管后期jdbc会被mybatis所取代,但是mybatis的底层逻辑也是运用jdbc技术,所以一定要注重jdbc技术的学习。(面试也会问这方面的问题)

JDBC技术

JDBC:java数据库连接

使用java程序去访问和操作数据库的技术,由SUN公司制定的一组接口规范。

为什么SUN把JDBC技术制定成接口规范?

接口:一组设计规范,低耦合-------屏蔽底层的代码实现差异

JDBC技术去访问不同的数据库类型。

接口的实现?

由数据库厂商提供 —> 驱动jar包 ojdbc6.jar

JDBC技术访问思想

7e07c2ac363f6d66d544ae6a19cbd24e.png

创建数据库连接

这是第一步,所有的一切都要建立在这个基础之上。连接的步骤如下:

1.写一个文件名叫jdbc.properties的文件,放在src目录下,内容如下

url=jdbc:mysql://127.0.0.1:3306/lbz

username=root

password=root

driverClassName=com.mysql.cj.jdbc.Driver

2.导包,一般开发中用的都是druid这个包

cf92ad000c840a6a31b79a7606850ca5.png

3.连接的代码如下

@Test  public void test() throws Exception {
        Properties properties = new Properties();    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid");    properties.load(is);//    造数据库连接池    DataSource source = DruidDataSourceFactory.createDataSource(properties);    Connection connection = source.getConnection();    System.out.println(connection);   }

使用的是类加载器来读取文件。

JDBC程序演示

修改型的sql语句,可以没有返回值,如果有只能为int,其表示一共修改了几行。

sql语句中的update,insert,delete在jdbc中都可以用一下代码,仅仅是修改sql语句而已。

public int Update(String sql, Object...args) {
        Connection connection = null;    PreparedStatement prepareStatement = null;    try {
    //      获取连接      connection = javaUtils.getConnection();//      预编译sql语句,返回prepareStatement实例      prepareStatement = connection.prepareStatement(sql);//      填充占位符      for(int i =0; i < args.length; i++) {
            prepareStatement.setObject(i+1,args[i]);      }//      执行      return prepareStatement.executeUpdate();    }  catch (Exception e) {
          // TODO Auto-generated catch block      e.printStackTrace();    }finally {
    //      关闭资源      javaUtils.close(connection, prepareStatement);    }    return 0;  }

以上是修改型的sql语句,下面我们来写一下有返回内容的select查询语句。

这是一个泛型方法,确保可以对不同的javaBean类进行查询

/** * @author bozhi *不同表查询 返回表中的一条记录 */public class PrepareStatementTest {
        public T test(Class clazz,String sql,Object...args) {
        Connection connection = null;    PreparedStatement prepareStatement = null;    ResultSet executeQuery = null;    try {
          connection = javaUtils.getConnection();      prepareStatement = connection.prepareStatement(sql);      for(int i = 0; i < args.length;i++) {
            prepareStatement.setObject(i+1, args[i]);      }      executeQuery = prepareStatement.executeQuery();      ResultSetMetaData metaData = executeQuery.getMetaData();      int columnCount = metaData.getColumnCount();      if(executeQuery.next()) {
    //        Customer customer = new Customer();        T t = clazz.newInstance();        for(int i = 0; i < columnCount; i++) {
              Object object = executeQuery.getObject(i+1);//          获取列的列名//          String columnName = metaData.getColumnName(i+1);          String columnLabel = metaData.getColumnLabel(i+1);//          String columnLabel = metaData.getColumnLabel(i+1); 获取列的别名 (推荐)          Field declaredField = clazz.getDeclaredField(columnLabel);          declaredField.setAccessible(true);          declaredField.set(t, object);        }        return t;      }    } catch (Exception e) {
          // TODO Auto-generated catch block   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值