Day23 MySql数据库与JDBC (3)JDBC
2019-06-02 16:17
267 查看
JDBC
JAVA Database Connectivity java数据连接
使用JDBBC的基本步骤
- 注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
- 建立连接
//2.建立连接 参数一:协议+访问的数据库,参数二:用户名,参数三:密码 conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
- 创建statement对象
//3.创建statement,跟数据库打交道,一定需要这个对象 st = conn.createStatement();
- 执行sql,得到ResultSet
//4.执行查询,得到结果集 String sql = "select * from t_stu"; rs = st.executeQuery(sql);
- 遍历结果集
//5.遍历查询每一条记录 while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println("id="+id +"==name="+name+"==age="+age); }
- 释放资源
try { if(rs != null){ rs.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ rs = null; } ......
JDBC 工具类构建
- 资源释放工作的整合
- 驱动防二次注册
DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Driver 这个类里面有静态代码块,一上来就执行了,所以等同于我们注册了两次驱动. //静态代码块-->类加载了,就执行java.sql.DriverManager.registerDriver(new Driver()); 直接用一下代码即可: Class.forName("com.mysql.jdbc.Driver");
- 使用properties配置文件
1.在src底下声明一个文件 xxx.properties
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/student
name=root
password=root
2.在工具类里面,使用静态代码块,读取属性
static{ try { Properties properties = new Properties(); InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); properties.load(is); driverClass = properties.getProperty("driverClass"); url = properties.getProperty("url"); name = properties.getProperty("name"); password = properties.getProperty("password"); } catch (Exception e) { e.printStackTrace(); } }
数据库的CRUD
- insert
INSERT INTO t_stu (NAME , age) VALUES (‘wangqiang’,28)
INSERT INTO t_stu VALUES (NULL,‘wangqiang’,28) - delete
DELETE FROM t_stu WHERE id = 6 - query
SELECT * FROM t_stu - update
UPDATE t_stu SET age = 38 WHERE id = 1
使用单元测试,测试代码
- 定义一个类,TestXXX,里面定义方法 testXXX
- 添加junit的支持
右键工程—add Library—Junit—Junit4 - 在方法的上面加上注解,其实就是一个标记
@Test
public void testQuery(){ … } - 光标选中方法名字,然后右键执行单元测试.
Dao模式
Data Access Object 数据访问对象
- 新建一个dao的接口,里面声明数据库访问规则
- 新建一个dao的实现类,具体实现定义的规则
- 直接使用实现
statement安全问题
- Statement执行,其实是先拼接sql语句的,然后执行
PrepareStatement
该对象就是替换前面的statement对象
- 相比较以前的statement,预先处理给定的sql语句,对其执行语法检查.在sql语句里面使用?占位符来替代后续要传入进来的变量,后面进来的变量值,将会被看成是字符串,不会产生任何的关键字.
总结
- JDBC入门
- 抽取工具类
- Statement CRUD
- Dao模式
声明与实现分开 - PrepareStatement CRUD
预处理sql语句,解决上面的statement出现的问题
以上内容学习自黑马java
相关文章推荐
- mysql数据库插入时间日期数据异常com.mysql.jdbc.MysqlDataTruncation
- android连接Mysql数据库之JDBC方式
- Jdbc操作MySql数据库插入数据性能研究
- JDBC 连接MYSQL数据库
- java的JDBC连接mysql数据库时对于Datetime类型出现Cannot convert value '0000-00-00 00:00:00' from column 9 to TIMESTAMP.
- JDBC连接MySql数据库的简单例子
- JDBC连接mysql数据库
- Java使用JDBC驱动连接MySQL数据库
- MySQL数据库的JDBC连接
- mysql数据库100万条数据插入采用jdbc的各种方式效率对比。
- eclipse新建java工程利用JDBC连接MYSQL数据库
- JDBC连接MySQL数据库的示例代码
- JDBC连接MySQL数据库(数据库信息硬编码到程序中)
- java使用jdbc连接mysql数据库
- 在jsp中使用JDBC连接mysql数据库出现错误
- JDBC链接本地MySQL数据库,创建表结构并添加数据和查询数据
- JDBC连接MySQL数据库
- java使用JDBC连接MySql数据库
- JDBC进行mysql数据库操作并保持事务的一致性
- Java 通过JDBC连接Mysql数据库的方法和实例