首先,需要了解一些连接Oracle的基础的知识

jdbc:oracle:thin:@localhost:1521:orcl是java程序通过jdbc连接oracle数据库的一种方式。

解释:


jdbc:代表以jdbc的方式连接;


oracle:表示连接的是oracle数据库;


thin:表示连接时采用thin模式(oracle中有两种模式);


@表示地址;


localhost:1521:orcl中localhost代表本地数据库,1521代表本地数据库端口号,orcl代表本地数据库的sid。sid一般和数据库名称一样


关于thin的解释:


thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行。


thin就是纯粹用Java写的ORACLE数据库访问接口。


oci是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端。oci是Oracle


 Call 


Interface的首字母缩写,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度 


快,但是需要安装和配置数据库。

1 查询全部
public class Test {
 /**
  * 下面基本上是固定的一些代码(本例并未建立数据库)
  * @param args
  * @throws Exception
  */
 public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
 public static final String DBURL="jdbc:oracle:thin:@localhost:1521:oracl";//mldn好像是本机名称
 public static final String DBUSER="scott";
 public static final String DBPASSWORD="tiger";
 


 public static void main(String[] args) throws Exception {
 Class.forName(DBDRIVER);
 Connection conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
 String sql=" select mid,name,age,birthday,note from member ";
 PreparedStatement ps=conn.prepareStatement(sql);
 ResultSet rs=ps.executeQuery();
 while(rs.next())
 {
 int mid=rs.getInt(1);
 String name=rs.getString(2);
 int age=rs.getInt(3);
 Date birthday=rs.getDate(4);
 String note=rs.getString(5);
 System.out.println(mid+","+name+","+age+","+birthday+","+note);
 
 }


 }


}






2 根据ID查询
public class Test {
 /**
  * 下面基本上是固定的一些代码(本例并未建立数据库)
  * @param args
  * @throws Exception
  */
 public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
 public static final String DBURL="jdbc:oracle:thin:@localhost:1521:DESKTOP-VV9FH43";//mldn好像是本机名称
 public static final String DBUSER="scott";
 public static final String DBPASSWORD="tiger";
 


 public static void main(String[] args) throws Exception {
 Class.forName(DBDRIVER);
 Connection conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
 String sql=" select mid,name,age,birthday,note from member where mid=? ";
 PreparedStatement ps=conn.prepareStatement(sql);
 ps.setInt(1, 50);//给第一占位符赋值50
 ResultSet rs=ps.executeQuery();
 while(rs.next())
 {
 int mid=rs.getInt(1);
 String name=rs.getString(2);
 int age=rs.getInt(3);
 Date birthday=rs.getDate(4);
 String note=rs.getString(5);
 System.out.println(mid+","+name+","+age+","+birthday+","+note);
 
 }


 }


}






3根据模糊查询
public class Test {
 /**
  * 下面基本上是固定的一些代码(本例并未建立数据库)
  * @param args
  * @throws Exception
  */
 public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
 public static final String DBURL="jdbc:oracle:thin:@localhost:1521:DESKTOP-VV9FH43";//mldn好像是本机名称
 public static final String DBUSER="scott";
 public static final String DBPASSWORD="tiger";
 


 public static void main(String[] args) throws Exception {
 String column="name";//在name列上进行模糊查询
 String keyWord="李";//关键字
 Class.forName(DBDRIVER);
 Connection conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
 //一定注意like旁边的空格,因为name like ‘%李%’;这是有空格的,所以双引号中的like也要有空格。
 String sql=" select mid,name,age,birthday,note from member where"+column+" like ?";
 PreparedStatement ps=conn.prepareStatement(sql);
 ps.setString(1, "%"+keyWord+"%");
 ResultSet rs=ps.executeQuery();
 while(rs.next())
 {
 int mid=rs.getInt(1);
 String name=rs.getString(2);
 int age=rs.getInt(3);
 Date birthday=rs.getDate(4);
 String note=rs.getString(5);
 System.out.println(mid+","+name+","+age+","+birthday+","+note);
 
 }


 }


}




4 分页查询
public class Test {
 /**
  * 下面基本上是固定的一些代码(本例并未建立数据库)
  * @param args
  * @throws Exception
  */
 public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
 public static final String DBURL="jdbc:oracle:thin:@localhost:1521:DESKTOP-VV9FH43";//mldn好像是本机名称
 public static final String DBUSER="scott";
 public static final String DBPASSWORD="tiger";
 


 public static void main(String[] args) throws Exception {
 int currentPage=1;//当前在第一页
 int lineSize=5;//每行显示5行记录
 String column="name";//在name列上进行模糊查询
 String keyWord="李";//关键字
 Class.forName(DBDRIVER);
 Connection conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
 //一定注意like旁边的空格,因为name like ‘%李%’;这是有空格的,所以双引号中的like也要有空格。
 String sql="select * from (select mid,name,age,birthday,note,rownum rn from member where"+column+" like ? and rownum<=?) temp where temp.rn>?";
 PreparedStatement ps=conn.prepareStatement(sql);
 ps.setString(1, "%"+keyWord+"%");
 ps.setInt(2, currentPage*lineSize);//每页多少记录
 ps.setInt(3, (currentPage-1)*lineSize);//当前的页数
 ResultSet rs=ps.executeQuery();
 while(rs.next())
 {
 int mid=rs.getInt(1);
 String name=rs.getString(2);
 int age=rs.getInt(3);
 Date birthday=rs.getDate(4);
 String note=rs.getString(5);
 System.out.println(mid+","+name+","+age+","+birthday+","+note);
 
 }


 }


}


、MySQL用limit分页

* sql:可以是单表的查询语句,也可以是多表的联合查询语句
* pageSize:每页显示的记录数

eg:  select * from (select * from Student)  limit 0,20;    //取1-20条数据
        select * from (select * from Student)  limit 20,20;    //取21-40条数据
第二种 写法
select * from Student  where limit (currentPage-1)*pageSize ,pageSize;
5统计查询 

public class Test { 

 /** 

  * 下面基本上是固定的一些代码(本例并未建立数据库) 

  * @param args 

  * @throws Exception 

  */ 

 public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver"; 

 public static final String DBURL="jdbc:oracle:thin:@localhost:1521:DESKTOP-VV9FH43";//mldn好像是本机名称 

 public static final String DBUSER="scott"; 

 public static final String DBPASSWORD="tiger"; 

  



 public static void main(String[] args) throws Exception { 

 //int currentPage=1;//当前在第一页 

 //int lineSize=5;//每行显示5行记录 

 String column="name";//在name列上进行模糊查询 

 String keyWord="李";//关键字 

 Class.forName(DBDRIVER); 

 Connection conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD); 

 //一定注意like旁边的空格,因为name like ‘%李%’;这是有空格的,所以双引号中的like也要有空格。 

 String sql="select count(*) from member where"+column+" like ?"; 

 PreparedStatement ps=conn.prepareStatement(sql); 

 ps.setString(1, "%"+keyWord+"%"); 

 //ps.setInt(2, currentPage*lineSize); 

 // 
 ps.setInt(3, (currentPage-1)*lineSize); 

 ResultSet rs=ps.executeQuery(); 

 //因为count(*)只返回column这一列,所以不用循环了 

 if(rs.next()) 

 {long count=rs.getLong(1); 

 System.out.println(count); 

  

 } 



 } 



}

这是一个对于分页查询解释很不错的连接