赞
踩
需要用到的jar包:mysql-connector-java-5.1.43-bin.jar
1.把连接数据库需要的信息,都保存在一个文件中,这个文件是一个properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/javaee1707?useSSL=true
user=root
password=123456
代码实现
public class JDBCUtil {
private static String url = null;
private static String user = null;
private static String password = null;
private static String driverClass = null;
private static InputStream in = null;
//利用静态代码块的特征,在类文件加载到内存的时候,就会执行在静态代码块里面的代码
static {
try {
//1. 读取配置文件信息 读取properties文件
Properties props = new Properties();
//如果一个properties文件加载到内存中,需要借助于IO流
in = new FileInputStream("./src/db.properties");
//2. 利用Properties里面的load方法加载文件
props.load(in);
//3. 可以通过Properties类对象,获取到想要的数据
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
driverClass = props.getProperty("driver");
//4. 加载类文件
Class.forName(driverClass);
} catch (IOException | ClassNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
System.out.println("驱动加载失败");
} finally {
//关闭文件连接
if (in != null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
获取数据库连接对象
@return
*/
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
关闭数据库连接,释放Statement
@param conn 数据库连接对象
@param st Statement对象
*/
public static void close(Connection conn, Statement st) {
try {
if (st != null) {
st.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
//糖衣炮弹
throw new RuntimeException(e);
}
}
//关闭带有结果集的查询语句资源
public static void close(Connection conn, Statement st, ResultSet set) {
try {
if (st != null) {
st.close();
}
if (set != null) {
set.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
//糖衣炮弹
throw new RuntimeException(e);
}
}
}
3.通过自定义JDBC工具类来连接数据库
public class Demo2 {
//创建表格
@Test
public void createTable() {
Statement st = null;
//1. 通过已经封装好的JDBC工具类,获取到数据库的连接对象
Connection conn = JDBCUtil.getConnection();
try {
//2. 获取Statement,SQL语句运输者,将SQL语句运输到MySQL里面,让MySQL运行
st = conn.createStatement();
//3. 准备SQL语句
String sql = "create table WOW(heroID int not null primary key auto_increment,heroName char(30))";
//4. 通过Statement执行SQL语句
int count = st.executeUpdate(sql);
//5. 查看创建的结果
System.out.println("影响的行数:" + count);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 使用Statement执行DML语句
@Test
public void testInsert() {
Statement st = null;
//1. 建立数据库连接
Connection conn = JDBCUtil.getConnection();
try {
//2. 获取到Statement
st = conn.createStatement();
//3. 准备SQL语句
String sql = "insert into WOW(heroName) values('萨满')";
//4. 通过Statement执行SQL语句
int count = st.executeUpdate(sql);
//5. 影响的行数
System.out.println("count = " + count);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//conn是连接数据库的资源,st是应用程序到MySQL直接的SQL语句运输者
//这两个都算是资源,所以都需要关闭
try {
if (st != null) {
st.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
/ /使用Statement查询数据库中数据
@Test
public void testSelect() {
Connection conn = null;
Statement st = null;
ResultSet set = null; //查询语句返回的结果集对象
try {
//1. 获取数据库连接对象
conn = JDBCUtil.getConnection();
//2. 获取Statement
st = conn.createStatement();
//3. 准备SQL语句
String sql = "select * from WOW";
//4. 执行SQL语句 【获取查询结果集】
set = st.executeQuery(sql);
//5. Result next() getXXX(String 字段名) XXX表示不同的数据类型,
//根据当前的代码需求 使用不同的数据类型
while (set.next()) {
int heroID = set.getInt("heroID");
String heroName = set.getString("heroName");
System.out.println(heroID + ":" + heroName);
}
} catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
} finally {
JDBCUtil.close(conn, st, set);
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。