JDBC:
1、 DQL :数据库查询语言2、 DML :数据库操作语言
3、 DDL :数据库定义语言
4、 DCL :数据库控制语言
1、创建:
--读取扎包 -- 接口 (driver驱动 driverManager驱动管理器) --Class.forName("oracle.jdbc.driver.OracleDriver");
b 建立链接 --接口(Connection) Connection connection = driverManager.getConnection("url","uname","password");
url -- jdbc:oracle:thin:@192.168.1.37:1521:orcluname -- scott
password -- tiger
c 发送请求 -- sql语句( 大写的在数据库的执行程序中的执行模式比较快 SELECT * FROM EMP;--dql[执行计划]) 接口(statement)
Statement statement = connection.creatStatement();PreparedStatement pstmt = connection.preparedStatement(sql);<<---在使用sql时用占位符占位 会预编译sql语句
d 返回结果 --Resultset
Resultset resultset = statement.executeQuery(sql); 放回结果集int count = pstmt.executeUpdate();受影响的行数/不用使用sql在方法中
e 处理结果 --循环读取 while(resultset.next())
打印结果集:getInt getString getDate getTime getTimestamp获取年月日时分秒毫秒在使用时可以直接使用列名找到相对应的sql查询语句,也可以使用索引,它的索引时从第1个开始(当列名不好获取而且列名不会改变的时候会用索引查找count(*) 用索引方便1,而用列名比较麻烦count(*))
f 关闭链接 --先打开的后关闭 .close();
2、关闭链接时不一定会关闭,需要以下几步:
a 作用域b 关闭链接时判断是否为空
3、select * from emp for update; 可以直接在表中修改数据,但是有一个缺点,会锁全表数据,重启服务后又会锁住。会提交事务!事务会默认提交!
4、在提交事务的时候,如果不更改默认值则会默认提交:
connection.setAutoCommit(flase);需要手动提交 -〉〉〉 手动提交:connection.commit();/ connection.rollback();
只要是物理io就有延迟
charSequence是String(不可变)Stringbuffer(线程不安全效率高)Stringbuilder(线程安全效率低)的父接口
一般实现接口可序列化 (Serializable) 重写tosting equalse hushmap
truncate table emp;删除某张表的内容
MYSQL中插入数据时 如果有时间字段 在使用sql插入和jdbc插入时要使用NOW()来占位
在使用sqlplus时使用getdate();