Jdbc
来源:互联网 发布:java新手入门教程视频 编辑:程序博客网 时间:2024/06/08 07:54
JDBC
连接数据库步骤
- 加载驱动:Class.forName(driverClassName)
- 获取连接:DriverManager.getConnection(url,username,password)
String driverClassName="com.mysql.jdbc.Driver";String url="jdbc:mysql://localhost:3306/mydb";String username="root";String password="root";try { Class.forName(driverClassName);//加载驱动 Connection connection=DriverManager.getConnection(url, username, password);//获取连接 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }
Statement接口
Statement主要用于执行不带参数的简单sql
1. 创建Statement:con.createStatement()
2. 调用executeUpdate(String sql),进行增、删、改
3. 调用executeQuery(String sql),进行查询
PreparedStatement接口(常用)
PreparedStatement继承自Statement,主要用于执行动态sql,强大之处在于可以防止sql攻击、提高代码可读性和可维护性、提高效率。
1. 创建PreparedStatement:con.prepareStatement(sql模板)
2. 给参数赋值: prepareStatement.setXxx(x,x)
3. 调用executeUpdate()或者executeQuery(),他们都无参数
ResultSet接口
用于存放查询结果集,具有指向当前数据行的指针,开始位置在第一条记录前,next()方法可以使指针向下移,使用get(int)获取当前行指定列值。
ResultSet rs=statement.executeQuery(sql);while (rs.next()) { String id=rs.getInt(1);//获取第一列值 String username=rs.getString(2); String password=rs.getString(3); System.out.println(id+","+username+","+password);}
批处理
- 打开批处理
MySql的批处理,需要通过参数打开:rewriteBatchedStatements=true - 添加批:addBatch()
- 执行批:executeBatch()
事务
- 事务有四大特性:原子性、一致性、隔离性、持久性
- 在jdbc中,通过Connection完成,同一个事务属于同一个Connection对象
- 事务一般格式:
try{ con.setAutoCommit(false);//开启事务 ... ... con.commit();//提交事务}catch(Exeception e){ con.rollback();//出现异常,事务回滚}
数据库连接池
Connection创建工作交给连接池,需要时向连接池取,不需要时close()归还,常用c3p0连接池。
1. 池类是:ComboPooledDataSource:ComboPooledDataSource dataSource =new ComboPooledDataSource();
2. 导入c3p0的两个jar包:c3p0-0.9.5-pre10.jar和mchange-commons-java-0.2.8.jar
3. src下创建c3p0-config.xml:
<?xml version="1.0" encoding="UTF-8"?><c3p0-config> <default-config> <property name="user">root</property> <property name="password">root</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> </default-config> <named-config name="mysql"> <property name="user">root</property> <property name="password">root</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> </named-config></c3p0-config>
0 0
- jdbc
- JDBC
- jdbc
- JDBC
- jdbc
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- jdbc
- JDBC
- JDBC
- jdbc
- platform_driver_probe与platform_driver_register
- android项目之小闹钟之准备篇
- 相关链接
- 基于Deep Learning的跟踪算法总结(二)
- Android状态栏微技巧,动态控制状态栏显示和隐藏
- Jdbc
- HDU 3336 Count the string(KMP+求给定字符串含前缀的数量)
- springcloud 的eureka服务注册demo
- STM32之中断与事件---中断与事件的区别
- matlab添加工具箱(2014b版)
- WKWebView适应屏幕宽度
- MATLAB逻辑数组
- struts2+jquery+Ajax异步请求发送与解析json数据
- 自定义BitmapTransformation完美解决Glide加载圆角或者圆形图片