jdbc(java databasse connectivity),顾名思义就是java数据库连接,即通过java连接数据库的一种方式,下面我们还学习下,jdbc的具体实现过程。
快速入门
简单6招,让你对jdbc不再模糊。
package com.hopeful.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Jdbc {
public static void main(String[] args) {
try {
// 1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.根据数据库连接信息,获取数据库连接信息
String user = "root";
String pwd = "root";
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo_db?useUnicode=true&characterEncoding=utf8", user, pwd);
// 3.获取执行SQL语句的对象
Statement statement = connection.createStatement();
String sql = "select * from account";
// 4.获取结果集
ResultSet resultSet = statement.executeQuery(sql);
// 5.遍历结果集
while(resultSet.next()) {
System.out.print("id="+resultSet.getInt("id"));
System.out.print(",name="+resultSet.getString("name"));
System.out.println(",money="+resultSet.getDouble("money"));
}
// 6.释放资源
if(resultSet != null) {
resultSet.close();
}
if(statement != null) {
statement.close();
}
if(connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
jdbc优化
虽然上面实现了数据库的连接,但是每次连接数据库都需要这么做过于麻烦,有什么办法可以简化的吗?答案,肯定是有的啦。
-
提取工具类
将常用的代码块封装为工具类是一种方法。 -
配置信息填写到配置文件中
有过项目经验的都知道,为了便于修改,我们常用的配置信息都是写在配置文件上,将数据库连接信息写到配置文件也是不错的优化方法。
因此提取工具类和书写配置文件将会是常用且很不错的方法。
下面我们也来尝试下。
创建db.properties文件,内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jt_db?useUnicode=true&characterEncoding=utf8
user=root
pwd=root
工具类
package com.hopeful.jdbc;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class Jutils {
static String driver;
static String url;
static String user;
static String pwd;
static {
// 1.读取配置
InputStream rs = Jutils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
try {
properties.load(rs);
driver = properties.getProperty("driver");
url = properties.getProperty("url");
user = properties.getProperty("user");
pwd = properties.getProperty("pwd");
// 2.注册驱动
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
// 获取连接
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,pwd);
}
// 释放资源
public static void releaseResource(ResultSet rs, Statement statement, Connection connection) {
if(rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(statement != null) {
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(connection != null) {
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
下面我们验证下编写的工具类。
查询
package com.hopeful.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcQuery {
public static void main(String[] args) {
try {
// 获取连接
Connection connection = Jutils.getConnection();
// 获取执行sql的对象
Statement statement = connection.createStatement();
String sql = "select * from account";
// 获取结果集
ResultSet resultSet = statement.executeQuery(sql);
// 遍历结果集
while(resultSet.next()) {
System.out.print("id="+resultSet.getInt("id"));
System.out.print(",name="+resultSet.getString("name"));
System.out.println(",money="+resultSet.getDouble("money"));
}
// 释放资源
Jutils.releaseResource(resultSet,statement,connection);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
更新(插入,修改,删除)
package com.hopeful.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcUpdate {
public static void main(String[] args) {
try {
Connection connection = Jutils.getConnection();
Statement statement = connection.createStatement();
// 插入操作
//String sql = "INSERT INTO ACCOUNT VALUE(NULL,'hopeful',3000)";
// 更新操作
// String sql = "UPDATE ACCOUNT SET money=3000 WHERE NAME='hopeful'";
// 删除操作
String sql = "DELETE FROM ACCOUNT WHERE NAME='hopeful'";
int count = statement.executeUpdate(sql);
System.out.println("影响的行数" + count);
Jutils.releaseResource(null,statement,connection);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
小试牛刀
让用户输入用户名和密码实现登录效果,代码如下:
package com.hopeful.jdbc;
import netscape.security.UserTarget;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class LoginUser {
static Connection connection = null;
static Statement statement = null;
static ResultSet rs = null;
public static void main(String[] args) {
try {
// 获取连接
connection = Jutils.getConnection();
// 获取执行sql的传输器对象
statement = connection.createStatement();
System.out.println("请登录");
System.out.println("请输入用户名");
Scanner scanner = new Scanner(System.in);
String user = scanner.nextLine();
System.out.println("请输入密码");
String password = scanner.nextLine();
loginUser(user, password);
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
Jutils.releaseResource(rs, statement, connection);
}
}
public static void loginUser(String user, String password) {
String sql = "select * from user where user = '" + user + "' and password = '" + password + "' ";
try {
ResultSet resultSet = statement.executeQuery(sql);
if(resultSet.next()) {
System.out.println("登录成功");
} else {
System.out.println("登录失败");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
阅读到这里,相信你对jdbc已经有了较为清晰的理解,如果动手再尝试下,相信你理解得更为清楚,赶紧去试试吧。
如果对你有用,你的支持(点赞,收藏)就是我写作的最大东西。