首先,需要了解一些连接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);
}
}
}
这是一个对于分页查询解释很不错的连接