通过JDBC实现对Oracle,mysql数据库的增删改查,模糊查询,查询全部,根据ID查询,分页查询,统计查询,

首先,需要了解一些连接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);

}


}


}

https://blog.csdn.net/guyong1018/article/details/2183057//这是一个对于分页查询解释很不错的连接






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值