java jdbc连接oracle查询表数据判断是否是空_数据库JDBC:在你踏上梦想的那一刻,注定孤独...

bbad3572b45529a067c235a32fca584d.png

(梦想的孤独路途中,总有出不完的汗水,睡不好的觉,学不完的知识,少不了的磕磕碰碰,但,累和懦弱不是你放弃的理由!)

(谢谢观赏)


JDBC概述:

话题:什么是JDBC.

1.将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写
一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优
势。
2.JDBC(Java Data Base Connectivity,Java数据库连接).
3.是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问.
4.它由一组用Java语言编写的类和接口组成.
5.有了JDBC,程序员只需用JDBC API写一个程序,就可以访问所有数据库。

f47be63613d3e3bfddd01d516d8f9596.png

JDBC API:

提供者:Sun公司 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如 DriverManager类 .

作用:管理各种不同的JDBC驱动 .

Connection接口.

Statement接口.

ResultSet接口.

JDBC 驱动:

提供者:数据库厂商. 作用:负责连接各种不同的数据库. JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。

68b1788555b1e84feb1c069778e07d39.png

JDBC访问数据库步骤:

1:加载一个Driver驱动 2:创建数据库连接(Connection) 3:创建SQL命令发送器Statement 4:通过Statement发送SQL命令并得到结果 5:处理结果(select语句) 6:关闭数据库资源 ResultSet.Statement.Connection。

怎么去实现这个步骤呢?

一.加载驱动:

加载JDBC驱动是通过调用方法java.lang.Class.forName(),下面列出常用的几种数据库驱动程序

加载语句的形式 :

1.Class.forName(“oracle.JDBC.driver.OracleDriver”);//使用Oracle的JDBC驱动程序
2.Class.forName(“com.microsoft.JDBC.sqlserver.SQLServerDriver”);//使用SQL Server的JDBC驱动程序
3.Class.forName(“com.ibm.db2.JDBC.app.DB2Driver”);//使用DB2的JDBC驱动程序
4.Class.forName("com.mysql.JDBC.Driver");//使用MySql的JDBC驱动程序.


package javastudy;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Test1 {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		// TODO Auto-generated method stub
		//将驱动程序加载到内存中
		Class.forName("com.mysql.jdbc.Driver");
		//创建一个连接
		Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/student","root","0000");	
		Statement st=conn.createStatement();
		ResultSet rs=st.executeQuery("select * from studinfo");
		while(rs.next())
		{
			for(int i=1;i<=4;i++)
			{
				System.out.print(rs.getString(i)+"t");
			}
			System.out.println();
		}
	}

}

62c75b4b383959586b8272daa823a5e7.png

二.创建数据库连接:

与数据库建立连接的方法是调用DriverManager.getConnection(String url, String user, Stringpassword )方法:

1.Connection conn=null;
2.String url="jdbc:oracle:thin:@localhost:1521:orcl";
3.String user=“scott";
4.String password=“tiger";
5.conn = DriverManager.getConnection(url, user, password);

三.创建Statement并发送命令:

1.Statement对象用于将 SQL 语句发送到数据库中,或者理解为执行sql语句
2.有三种 Statement对象:
3.Statement:用于执行不带参数的简单SQL语句;
4.PreparedStatement(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;
5.CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用。

四.处理ResultSet结果:

1.ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的
所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这
些行中数据的访问。
2.ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行
叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用
ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
3.ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。
初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后
指向最后一条记录的后面.

步骤说完了:我们来了解下其中的基本知识.


PreparedStatementa:

PreparedStatement接口继承Statement接.
预处理发送器,可以将sql语句进行预编译,提高效率防止 SQL 注入.
SQL 语句中需要配合占位符(?)来使用.

Properties优化:

Properties 是一个工具类, 表示属性集, 属性列表中每个
键及其对应值都是一个字符串. 可以保存在流中, 也可以
从流中加载.
特点:将数据库连接的信息存放在 properties 文件中, 便于后
续的维护, 修改后不用重新编译代码.
在 DBUtil 工具类中, 通过 Properties 对象加载并读取配
置文件, 动态为属性赋值.

java中如何读取Properties中的数据?

第一种方法:

nputStream in = getClass().getResourceAsStream("/config.properties");
Properties properties = new Properties();
properties.load(in);
String citys = properties.getProperty("属性");

---------------------

第二种方法:

在原文件中给变量赋值
创建Properties对象,
Properties prop = new Properties();

创建文件输入流:

InputStream is =DBUtil.class.getClassLoader().getResourceAsStream("db.properties");

加载配置文件

prop.load(is);

当写入大量数据时, JDBC操作要注意什么?

回答:

注意释放,提高效率,避免效率降低,和数据资源的流失.
提高效率:
从数据库设计方面考虑:
建立索引
分区(MysQL,比如按时间分区)
尽量使用固定长度的字段
限制字段长度
从数据库I/O方面:
增加缓冲区
如果涉及表的级联,不同的表存储在不同的硬盘上,以增加I/O读取的速度
从SQL语句方面:
优化SQL语句,减少比较的次数
限制返回的条目数(MySQL中用的limit)
从Java代码方面:
如果反复使用的查询,使用preparedStament减少查询的次数
使用批量处理.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值