首先, 本人用到编译器是idea, 主要聊聊java和Oracle数据库的连接 .
首先要在网上下载ojdbc8.jar 或者ojdbc6.jar这两个可以说成驱动程序.这是准备工作,当然前提是你的idea是已经安装好的,你的数据库也是装好了并可以使用的.
基本步骤如下:
打开idea,创建一个新工程,即project;
在工程目录下再创建一个文件夹,即Directory,名字就叫bin;
然后将下载好的ojdbc6.jar或ojdbc8.jar复制到这个工程的bin目录下,这个时候还不能使用;
然后打开file->Project Structure -> Modules ->然后就是点击最右边上的Scope旁边的那个"+"号,在这里将看到你下载的那两个文件,点击你选的.jar文件 -> Apply -> OK. 这样.jar文件就被加进来了.
成功加入后会是这样的:
好, 成功导入后,我们来看怎么连接:
我的做法是在工程中创建一个文件夹,这个文件夹用来装配置文件;
然后在这个文件夹里创建一个后缀为.properites的配置文件, 这个配置文件里装的是你数据库的用户名,密码,地址,协议,基本是这样写的:
#driver 是键,值是OracleDriver.class这个文件的完整路径
driver = oracle.jdbc.OracleDriver
#请求数据库地址,协议:@服务器地址,端口号,数据库实体
url = jdbc:oracle:thin:@127.0.0.1:1521:xe
#数据库登录名
user = chennyken;
#密码
pwd = chennyken;
有必要说明一下的是:xe是Oracle测试版,并不是正式版,正式版应该为orcl.
然后,我们来读取配置文件:
在src下创建一个bean包,在里面定义个类,这个类是配置的类.
package service.bean;
public class Dbconfig {
private String driver;
private String url;
private String user;
private String pwd;
public Dbconfig() {
}
public Dbconfig(String driver, String url, String user, String pwd) {
this.driver = driver;
this.url = url;
this.user = user;
this.pwd = pwd;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "Dbconfig{" +
"driver='" + driver + '\'' +
", url='" + url + '\'' +
", user='" + user + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
在src下创建一个tools工具包,专门用来读取配置文件或者定义接口用,然后在这个包下建一个.java文件,用来读取配置文件:
import java.io.IOException;
import java.util.Properties;
public class Readconfig {
/**
* 读取数据库的配置文件.
* 读取sc/config/db_config.properties文件中的配置信息.
* @return 数据库配置文件实体对象
*/
public Dbconfig readDbConfig(){
//-- 1.创建Properties对象
Properties mPro = new Properties();
//-- 2.加载配置文件
try {
mPro.load(
Readconfig.class.getClassLoader().
getResourceAsStream(
"config/db_config.properties"));
} catch (IOException e) {
e.printStackTrace();
}
//-- 3.生成一个DbConfig对象通过Properties对象来读取文件.
Dbconfig config = new Dbconfig();
//-- 4.给DbConfig对象赋值
config.setDriver(mPro.getProperty("driver"));
config.setUrl(mPro.getProperty("url"));
config.setUser(mPro.getProperty("user"));
config.setPwd(mPro.getProperty("pwd"));
//-- 5.将DbConfig对象传递出去
return config;
}
}
这样就完成了配置文件的读取.
下面我们来看看连接数据库:
先在tools包里创建一个接口,注意,如果要使用多少个数据库里的表就创建多少个接口;
package service.tools;
public interface TableInfo {
public static class Classmate{
public static final String MATE_SNO = "SNO";
public static final String MATE_SNAME = "SNAME";
public static final String MATE_SEX = "SEX";
public static final String MATE_SBIRTHDAY = "SBIRTHDAY";
public static final String MATE_SCLASS = "SCLASS";
}
}
然后再在bean包里创建一个相应的Classmate类:
package service.bean;
import java.io.Serializable;
public class Classmate implements Serializable {
private int sno;
private String sname;
private String sex;
private String sbirthday;
private String sclass;
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSbirthday() {
return sbirthday;
}
public void setSbirthday(String sbirthday) {
this.sbirthday = sbirthday;
}
public String getSclass() {
return sclass;
}
public void setSclass(String sclass) {
this.sclass = sclass;
}
@Override
public String toString() {
return "Classmate{" +
"sno=" + sno +
", sname='" + sname + '\'' +
", sex='" + sex + '\'' +
", sbirthday='" + sbirthday + '\'' +
", sclass='" + sclass + '\'' +
'}';
}
}
再在tools包中创建一个DBHelper类,这个类的作用才是真正的连接和断开数据库连接:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//帮助获取数据库数据
public class DBHelper {
private Connection mconnection;
private Readconfig mReadconfig;
private Dbconfig mdbconfig;
//利用构造方法完成dbconfig对象的获取
public DBHelper(){
mReadconfig = new Readconfig();
mdbconfig = mReadconfig.readDbConfig();
}
//获取数据库连接对象
public Connection getConnection(){
if(mconnection == null){
try {
Class.forName(mdbconfig.getDriver());
try {
mconnection = DriverManager.getConnection(mdbconfig.getUrl(),
mdbconfig.getUser(),
mdbconfig.getPwd());
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return mconnection;
}
//关闭数据库的连接
public void closeConnection(Connection connection){
try {
if(connection != null && !connection.isClosed()){
connection.close();
connection = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
好了,这下终于可以来测试数据库了:
import service.bean.Classmate;
import service.tools.DBHelper;
import service.tools.TableInfo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import static service.tools.TableInfo.Classmate.*;
public class ClassmateTest {
public static void main(String[] args) {
//创建一个list用来遍历数据库查询到的信息
ArrayList list = new ArrayList();
//-- 1.获取连接
Connection connection = null;
DBHelper helper = new DBHelper();
connection = helper.getConnection();
//-- 2.提供希望数据库执行的sql语句
String string = "select "+
MATE_SNO+", "+
MATE_SNAME+", "+
MATE_SEX+", "+
MATE_SBIRTHDAY+", "+
MATE_SCLASS+
" from classmate";
//两种都可以
//String string = "select sno,sname,sex,sbirthday,sclass from classmate";
//-- 3.创建预处理对象.通过连接获取预处理对象
try {
PreparedStatement preparedStatement = connection.prepareStatement(string);
//-- 3.1 处理占位符
//-- 4.通过预处理对象获取结果集
//-- executeQuery 专用于执行查询的语句
//-- executeUpdate 可以执行增删改,不可以执行查询
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet == null){
System.out.println("查询结果失败");
return ;
}
//-- 5.通过循环遍历结果集
//-- 如果有下一条记录返回true,否则返回false
while (resultSet.next()){
Classmate classmate = new Classmate();
classmate.setSno(resultSet.getInt(TableInfo.Classmate.MATE_SNO));
classmate.setSname(resultSet.getString(TableInfo.Classmate.MATE_SNAME));
classmate.setSex(resultSet.getString(TableInfo.Classmate.MATE_SEX));
classmate.setSbirthday(resultSet.getString(TableInfo.Classmate.MATE_SBIRTHDAY));
classmate.setSclass(resultSet.getString(TableInfo.Classmate.MATE_SCLASS));
//将数据加入到list中
list.add(classmate);
}
//6.对集合进行遍历
for (Object mate:list) {
System.out.println(mate);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
数据库查询,首先你得要在数据库里有这个表,还有数据.当然也可以在在idea中对数据库进行增删改的操作.至此,已成功完成数据库的连接和查询.