连接数据库有多种方式,对于初学者连接数据库,这里介绍两种方法及两种连接配置方式
方法一 运用statement
1、创建一个JDBC-statement项目
2、导包 --把连接数据库的驱动包导入
oracle驱动包可以在Oracle安装位置找到,也可以自己去下载
路径就是 app\计算机用户名\product\11.2.0\dbhome_1\jdbc\lib
mysql驱动包也可以自己去下载
我的Oracle驱动包在这个位置
导入驱动包,在右键build Path
2、加载驱动包,与数据库建立连接
(创建一个Conn类用于数据库的连接)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class Conn {
static String driverClass="oracle.jdbc.driver.OracleDriver"; //oracle的驱动
static String url="jdbc:oracle:thin:@localhost:1521:gfs"; //连接oracle路径方式 “”gfs“”是要建立连接的数据库名 1521端口
static String user="system"; //user是数据库的用户名
static String password="HeXu0607"; //用户登录密码
public static Connection getconn() { //为了方便下面的讲解,这里专门建立了一个用于数据库连接的一个方法
Connection conn=null;
try {//首先建立驱动
Class.forName("oracle.jdbc.driver.OracleDriver");//驱动成功后进行连接
conn=DriverManager.getConnection(url, user, password);System.out.println("连接成功");
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return conn; //返回一个连接
}
}
//自己在测试连接的时候可以不用定义连接方法
3、建立好连接后就是进行对数据库的操作了,首先是简单的查询操作
(为了方便演示,我先创建好这几个类,代表了不同的操作方法:查询Query,插入Insert,删除Delete,更新Update)
package com.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class Query {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
//1、获取连接对象
conn=Conn.getconn();
//2、创建statement类对象,用来执行SQL语句!!
st=conn.createStatement();
//3、创建sql查询语句
String sql="select *from stu";
//4、执行sql语句并且换回一个查询的结果集
rs=st.executeQuery(sql);
while(rs.next()) { //循环遍历结果集
int id=rs.getInt("id");
String name=rs.getString("name");
int score=rs.getInt("score");
System.out.println("id=" + id + "--" + "name=" + name + "--" + "score=" + score);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果
4、插入操作
package com.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class Insert {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
conn=Conn.getconn();
try {
//获得连接
st=conn.createStatement();
//创建插入的sql语句
String sql="insert into stu values(1002,'大佬',87)";
//返回一个进行此操作的结果,要么成功,要么失败,如果返回的结果>0就是成功,反之失败
int result=st.executeUpdate(sql);
if(result>0) {
System.out.println("添加成功");
}
else {
System.out.println("添加失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5、删除操作
package com.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class Delete {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
conn=Conn.getconn();
try {
st=conn.createStatement();
String sql="delete from stu where id='1002'";
int result=st.executeUpdate(sql);
//和插入一样,如果返回的结果大于0则操作成功
if(result>1) {
System.out.println("删除成功");
}
else{
System.out.println("删除失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
6、更新操作
package com.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class Updata {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
conn=Conn.getconn();
try {
st=conn.createStatement();
String sql="update stu set id=1003 where name='古富升'";
int result=st.executeUpdate(sql);
if(result>0)
System.out.println("更改成功");
else
System.out.println("更改失败");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
二、preparedStatement (预处理)
1、首先创建一个java工程,然后倒入驱动包,在build Path 驱动包 ,接着加载驱动包,创建用于连接的一个方法,和之前一样,就不多说了。
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class Conn {
static String driverClass="oracle.jdbc.driver.OracleDriver";
static String url="jdbc:oracle:thin:@localhost:1521:gfs";
static String user="system";
static String password="HeXu0607";
public static Connection getconn() {
Connection conn=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
2、查询操作(注意和statement的不同之处,除了这一点不同,其他都一样的,就不做过多介绍了,直接看一下代码啦)
package com.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class Query {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
conn = Conn.getconn();
//创建sql语句 但先不给出要查询的记录的id
String sql = "select *from stu where id=?";
//创建预处理对象,对sql语句先进行预处理
ps = conn.prepareStatement(sql);
//之后再设置参数id
ps.setInt(1, 1002);
//最后在把预处理sql语句进行执行,返回结果集
rs = ps.executeQuery();
while(rs.next()) {
int id=rs.getInt("id");
String name=rs.getString("name");
int score=rs.getInt("score");
System.out.println("id="+id+"--"+"name="+name+"--"+"score="+score);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、插入操作
package com.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class Insert {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement ps=null;
try {
conn=Conn.getconn();
String sql="insert into stu values(?,?,?)";
ps=conn.prepareStatement(sql);
ps.setInt(1, 1002);
ps.setString(2, "升哥哥");
ps.setInt(3, 83);
int rs=ps.executeUpdate();
if(rs==1)
System.out.println("添加成功");
else
System.out.println("添加失败");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4、删除操作
package com.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class Delete {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement ps=null;
try {
conn=Conn.getconn();
String sql="delete from stu where id=?";
ps=conn.prepareStatement(sql);
ps.setInt(1,1003);
int rs=ps.executeUpdate();
if(rs>0)
System.out.println("删除成功");
else
System.out.println("删除失败");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
5、更新操作
package com.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class Update {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement ps=null;
try {
conn=Conn.getconn();
String sql="update stu set score=? where id=?";
ps=conn.prepareStatement(sql);
ps.setInt(1,60);
ps.setLong(2,1001);
int rs=ps.executeUpdate();
if(rs>0)
System.out.println("更改成功");
else
System.out.println("更改失败");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
接下来再来讲解一下建立连接的一个另外配置方式
之前我们都是把连接的相关配置信息直接写在程序代码里面,那样程序的灵活性就会相对变差,当需要连接其他数据库时又得重新改程序,相当繁琐。下面就来讲解另外一种配置方式
properties文本配置
1、首先建立一个新项目,然后导包、add build path
2、为了快捷,在项目底下创建一个java.properties文件(实际中最好在项目下建立一个lib文件夹,放置各种包,例如jdbc驱动包)
3、打开java.properties,把连接的相关配置写入进去(这里补充一点:properties文件里面都是以键值对的方式写入的),写好后保存。
4、创建Conn类配置相关连接信息
package com.conn;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;import org.junit.Test;
public class Conn {
static String driverClass=null;
static String url=null;
static String user=null;
static String password=null;
static {
try {
//1、创建一个properties对象,用于一会获取之前文本里面的配置信息
Properties properties=new Properties();
//2、创建一个输入流,把文本里的信息写入输入流中
InputStream is=new FileInputStream("java.properties");
//properties.load()方法获取输入流
properties.load(is);
//获取键值对的信息
driverClass=properties.getProperty("driverClass");
url=properties.getProperty("url");
user=properties.getProperty("user");
password=properties.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getconn() {
Connection conn=null;
try {
Class.forName(driverClass);
conn=DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
5、创建一个example类来进行测试
package com.conn;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class Example {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
try {
conn=Conn.getconn();
st=conn.createStatement();
String sql="select *from stu";
rs=st.executeQuery(sql);
while(rs.next()) {
int id=rs.getInt("id");
String name=rs.getString("name");
int score=rs.getInt("score");
System.out.println("id=" + id + "--" + "name=" + name + "--" + "score=" + score);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
项目的目录结构如下:
希望对大家有帮助,另外还有很多个样子的方式,比如创建一个dao,这里就不多讲解了,大家可以去了解一下,项目开发一般都会用到它的!