这是自己跟着马士兵老师视频一边学习,一边自己把一些知识点先写到一个文档里面,为了以后自己查找。之前自己也跟着马士兵老师的视频学习了数据库ORACLE,当时就是在文档里面敲写了一些SQL语句,也没什么提示性语句。现在想想挺可惜的。现在就发表到博客里面吧。
JDBC随堂笔记:
基本程序:
1.JDBC的初步: Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.106:1521:orcl", "scott", "tiger");
sta=conn.createStatement();
re =sta.executeQuery("select * from dept");
while(re.next()) {
System.out.println(re.getString("deptno"));
}
2.DML: Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.106:1521:orcl","scott","tiger");
sta=conn.createStatement();
String sql ="insert into dept2 values(98, 'GAME','BK')";
sta.executeUpdate(sql);
3.Transaction: Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.106:1521:orcl","scott","tiger");
sta = conn.createStatement();
conn.setAutoCommit(false);
//sta.addBatch("insert into dept2 values(55,'sd','haha')");
sta.addBatch("insert into dept2 values(21,'sd','haha')");
sta.executeBatch();
conn.commit();
conn.setAutoCommit(true);
JDBC -- 数据库的联结纽带。
1.JDBC 全称: java database connectivity java数据库连接
2.数据库类型有: Oracle, SQLServer,Mysql,等。各个数据库对外提供的有API函数。当跨数据库时,由于各个数据库对外
提供的API不一样,这时就要分层来解决这个问题。微软提供的ODBC统一了各个数据库的对外接口。java中JDBC统一了各个数据库对外
的接口。对于不同的数据库,JDBC就要提供不同的类库去连接。
编程步骤:
1.加载驱动包:
1.build path 2.add external archives 3.找 classes12
2.创建驱动对象,自动向managerDriver注册。
3.Connection 连接数据库。Connection conn = ManagerDriver.getConnection();
4. 创建SQL语句(interface Statement)并执行一些操作
1.Statement sta = conn.createStatement();
2.sta.executeQuery("select * from dept");执行查询语句;
3.sta.executeUpdate();
5.循环遍历结果集:ResultSet 相当于一个游标,在第一个位置的前面。
ResultSet re; while(re.next()) re.getString(); re.getInt();
6.关闭一些资源,re.close(); sta.close(); conn.close(); 释放内存。 按照进栈顺序。
7.创建一个STRING类型,执行executeUpdate(),用Statement语句比较麻烦。“insert into table values("+deptno+",'"+dname+"','"+loc+"')";
可以吧这条SQL语句打印出来,检验。
8.灵活指定SQL语句中的变量。PreparedStatement conn.prepareStatement("insert into tabel values (?,?,?)");
9.调用SQL中的存储过程:用
CallableStatement ca = conn.prepareCall("{ call p(?,?,?)}";
ca.registerOutParameter(3,Types.INTEGER);
ca.setInteger(1,3);
ca.execute();
10. batch 批处理 Statement sta; sta.addBatch("insert ....");...sta.executeBatch();sta.close();
PreparedStatement pre=conn.prepareStatement("insert ....(?,?,?)");
pre.setInt(1,2); pre.addBatch();
11.运用事务处理:DML语句中Update自动提交,提交过程中可能会发生错误,所以,当所有的update都结束时在手动提交。
conn.setAutoCommit(false);
.
.
conn.commit();
当出现Exception时,conn.rollback(); conn.setAutoCommit();
12.结果集滚动:收索时可以不按照顺序,跳跃性收索。Statement sta=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY(并发访问结果集只读不能更新));
re.last(); re.getRow();到目前的位置有多少行记录。re.getInt(2)字段的第几个;re.getString(1); re.previous();
13.JDBC新增加的内容: DATASOURCE & ROWSET :datasoure 是用来代替DriverManager的,效率会更快。可以拿到数据库的连接,连接池实现
总结:
养成良好的习惯,吧一些容易出现的错误,先TRY{} CATCH{}。对于一些资源的关闭,先判断该资源是否
为null,关闭后在显式吧该资源对象设置为null;敲代码先把自己的思路大致说一下,要有注释。
7.往表中输入一些信息在java程序中。
SQL回忆语句:
1.创建一张表:
create table +表名(字段 数据类型);
2.复制一张表:
insert into table (字段列表。可省略)select (字段列表,可省略) from tabel; 例如:insert into a select * from b;
sample 显示,parse 转换
3.存储过程:
create or replace procedure p
(v_a in number, v_b number, v_ret out number, v_temp in out number)
is
begin
if(v_a > v_b) then v_ret := v_a;
else v_ret := v_b;
end if;
v_temp := v_temp + 1;
end;
install 安装