基本概念
------------------------------------------------------------
1、静态块:static{} //执行优先于构造函数,只执行一次
2、加载类:Class.forName(PackagePath); //加载包路径下的类
3、连接类:Connection //类,在java.sql.driver类下
4、连接url:"jdbc:oracle:thin@localhost:1521:ORCL","scott","tiger"
5、驱动包:ojdbc5.jar(oracle11g)
6、执行类:Statement类,在java.sql.Statement包下
7、结果集:ResultSet
8、集合泛型:限制集合中的存放类型
9、预处理:PreparedStatement类
10、批处理:Statement st = con.createNewStatement();st.addBatch(sql);at.executeBatch(sql);
使用方式
----------------------------------------------------------------------------------------------
1、导入数据库驱动包
--------------------------------------------------------------------------------------
ojdbc12.jar
2、加载oracle驱动:使用Class.forName()方法
--------------------------------------------------------------------------------------
static{
try{
Class.forName("oracle.driver.OracleDriver");
}catch(Exception e){
e.printStack();
}
}
3、获取数据库连接:使用Connection类中的方法
--------------------------------------------------------------------------------------
Connection con = DriverManager.getConnection();
4、执行sql语句:
--------------------------------------------------------------------------------------
Statement stat = con.createStatement();
int ret = stat.executeUpdate(sql); //执行增删改语句
ResultSet rs = stat.executeQuery(sql); //执行查询语句
while(rs.next()){
rs.getInt(1); //拿第一列,数据类型为int
rs.getString(2); //拿第二列,数据类型为Stirng
rs.getInt("pno"); //根据列名拿数据
}
-------------------------------------------------------------------------------------
PreparedStatement ps = con.preparedStatement("insert into usrInfo values(?,?,?,?,?)");
ps.setInt(1,1); //替换第一个问号
ps.setString(2,1); //替换第二个问号
ps.executedUpdate();
-------------------------------------------------------------------------------------
String sql1=""; //批处理方式处理数据
String sql2="";
ps.addbatch(sql1);
ps.addbatch(sql2);
int[] result = ps.excuteBatch();//当返回值大于零,则执行成功
--------------------------------------------------------------------------------------
con.setAutoCommit(false); //设置成手动事务提交
con.commit(); //提交
con.rollback(); //事务回滚
分层设计
-----------------------------------------------------------
1、获取数据库连接及其连接的关闭等操作可以封装在一个Dao类当中
2、每个数据库表都可以在程序中封装为一个实体类
3、每个实体类都封装在与实体类同名的Dao类当中
注意事项
-----------------------------------------------------------
1、Connection类和Statement类需要关闭
2、ResultSet类也需要关闭
3、Statment类容易实现SQL注入,安全性不佳,所以使用PreparedStatement比较安全
------------------------------------------------------------
1、静态块:static{} //执行优先于构造函数,只执行一次
2、加载类:Class.forName(PackagePath); //加载包路径下的类
3、连接类:Connection //类,在java.sql.driver类下
4、连接url:"jdbc:oracle:thin@localhost:1521:ORCL","scott","tiger"
5、驱动包:ojdbc5.jar(oracle11g)
6、执行类:Statement类,在java.sql.Statement包下
7、结果集:ResultSet
8、集合泛型:限制集合中的存放类型
9、预处理:PreparedStatement类
10、批处理:Statement st = con.createNewStatement();st.addBatch(sql);at.executeBatch(sql);
使用方式
----------------------------------------------------------------------------------------------
1、导入数据库驱动包
--------------------------------------------------------------------------------------
ojdbc12.jar
2、加载oracle驱动:使用Class.forName()方法
--------------------------------------------------------------------------------------
static{
try{
Class.forName("oracle.driver.OracleDriver");
}catch(Exception e){
e.printStack();
}
}
3、获取数据库连接:使用Connection类中的方法
--------------------------------------------------------------------------------------
Connection con = DriverManager.getConnection();
4、执行sql语句:
--------------------------------------------------------------------------------------
Statement stat = con.createStatement();
int ret = stat.executeUpdate(sql); //执行增删改语句
ResultSet rs = stat.executeQuery(sql); //执行查询语句
while(rs.next()){
rs.getInt(1); //拿第一列,数据类型为int
rs.getString(2); //拿第二列,数据类型为Stirng
rs.getInt("pno"); //根据列名拿数据
}
-------------------------------------------------------------------------------------
PreparedStatement ps = con.preparedStatement("insert into usrInfo values(?,?,?,?,?)");
ps.setInt(1,1); //替换第一个问号
ps.setString(2,1); //替换第二个问号
ps.executedUpdate();
-------------------------------------------------------------------------------------
String sql1=""; //批处理方式处理数据
String sql2="";
ps.addbatch(sql1);
ps.addbatch(sql2);
int[] result = ps.excuteBatch();//当返回值大于零,则执行成功
--------------------------------------------------------------------------------------
con.setAutoCommit(false); //设置成手动事务提交
con.commit(); //提交
con.rollback(); //事务回滚
分层设计
-----------------------------------------------------------
1、获取数据库连接及其连接的关闭等操作可以封装在一个Dao类当中
2、每个数据库表都可以在程序中封装为一个实体类
3、每个实体类都封装在与实体类同名的Dao类当中
注意事项
-----------------------------------------------------------
1、Connection类和Statement类需要关闭
2、ResultSet类也需要关闭
3、Statment类容易实现SQL注入,安全性不佳,所以使用PreparedStatement比较安全