码迷,mamicode.com
首页 > 数据库 > 详细

jdbc

时间:2019-03-12 18:46:54      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:NPU   gets   解决   except   lex   als   roo   数据库连接池   created   

常用接口:

  1. DriverManager:驱动管理对象

          注册驱动告诉程序使用哪个数据库驱动

 

2Connection:数据库连接对象

  1. 获取sql的对象

      createStatement()有sql注入

      PreparedStatement()继承createStatement()类解决了sql注入问题

2管理事务

      开启setAutoCommit(Boolean autoCommit)

       提交事务:commit();

       回滚事务:rollback()

   3Statement:执行sql的对象

              1执行sql

                 1 Int executeUpdate():执行增删改语句看返回值影响的行数判断执行成功与否

                 2ResultSet executeQuery(String sql):执行查的语句

 

  4ResultSet:结果集对象,封装查询结果:

1Getxxx(参数):获取数据

2next():对结果集进行滚动的方法移动到下一行

 

执行流程:

           1. 导入驱动jar包

            2.注册驱动

            3.获取数据库连接对象

            4.定义sql语句

            5.获取执行sql的对象 Statement

            6.执行sql

            7.处理结果

            8.释放资源

     代码实现:

public static void main(String[] args) throws Exception {

//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取连接对象
Connection con = DriverManager.getConnection("jdbc:mysql:///db1", "root", "");
//定义sql
String sql="select * from st ";
//获取指定sql             因为Statement有sql注入所以使用子类 PreparedStatement代替
PreparedStatement stm=con.prepareStatement(sql);
//执行sql
ResultSet rs=stm.executeQuery(sql);
//处理结果
while(rs.next()){
String name=rs.getString("name");
int age=rs.getInt("age");
System.out.println(name+age);

}

}

事务

public static void main(String[] args) {

                Connection conn = null;

                PreparedStatement pstmt1 = null;

                PreparedStatement pstmt2 = null;

       

                try {

                    //1.获取连接

                    conn = JDBCUtils.getConnection();

                    //开启事务

                    conn.setAutoCommit(false);

                    //2.定义sql

                    //3.获取执行sql对象

                    //4. 设置参数

                    //5.执行sql

                    //提交事务

                    conn.commit();

                } catch (Exception e) {

                    //事务回滚

                    try {

                        if(conn != null) {

                            conn.rollback();

                        }

                    } catch (SQLException e1) {

                        e1.printStackTrace();

                    }

                    e.printStackTrace();

                };

 连接池

1. 方法:

                * 获取连接:getConnection()

                * 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接

 

 2. 一般我们不去实现它,有数据库厂商来实现

Druid:数据库连接池实现技术,由阿里巴巴提供的

        

//1.导入jar包
//2.定义配置文件
//3.加载配置文件
Properties pro = new Properties();
InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//4.获取连接池对象
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//5.获取连接
Connection conn = ds.getConnection();
System.out.println(conn);

 

jdbc

标签:NPU   gets   解决   except   lex   als   roo   数据库连接池   created   

原文地址:https://www.cnblogs.com/xyhx/p/10518171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!