Java学习day01
1.JDBC
1.1 什么是JDBC
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
1.2 连接mysql
1.导入jar包:mysql-connector-java-5.1.37-bin.jar。
2.创建JDBCTest
import java.sql.*;
public class JDBCTest {
public static void main(String[] args) throws Exception{
//1.注册驱动
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
//2.获得连接
String url = "jdbc:mysql://ip:端口号/数据库名";
String username = "username";
String password = "password";
Connection conn = DriverManager.getConnection(url,username,password);
//3.创建sql语句执行对象
Statement statement = conn.createStatement();
//4.获取结果集对象
String sql = "select * from tb_admin";
ResultSet resultSet = statement.executeQuery(sql);
//5.处理结果集对象
while (resultSet.next()){
System.out.println(resultSet.getObject("id"));
}
//6.释放资源
resultSet.close();
statement.close();
conn.close();
}
}
1.3 创建自己的JDBCUtils
为了方便以后的使用,创建自己的JDBCUtils。
import com.mysql.jdbc.Driver;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String username;
private static String password;
static {
try {
/*
阅读com.mysql.jdbc.Driver源码,该类在创建的时候就已经进了行驱动注册,
所以直接创建该类避免2次注册
*/
Class.forName("com.mysql.jdbc.Driver");
//通过JDBCUtils.properties配置文件获取连接是需要的参数
Properties properties = new Properties();
properties.load(new FileInputStream("resourse/config.properties"));
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
//获取Connection对象
public static Connection getConn() throws SQLException {
return DriverManager.getConnection(url,username,password);
}
//释放资源
public static void CloseAll(Connection connection, Statement statement ,ResultSet resultSet){
if(connection != null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement != null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (resultSet != null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
JDBCUtils.properties文件
url=jdbc:mysql://ip:端口号/数据库名
username=username
password=password
1.4创建JDBCUtilsTest
创建JDBCUtilsTest,测试我们刚刚写好的JDBCUtils。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class JDBCUtilsTest {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement ps = null;
ResultSet resultSet = null;
try {
//获取连接对象
connection = JDBCUtils.getConn();
//获取sql语句执行对象,这里使用PreparedStatement以防止sql注入问题
String sql = "select * from tb_admin where id = ?";
ps = connection.prepareStatement(sql);
//设置sql语句中的变量id
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要查询的id值");
String id = scanner.nextLine();
ps.setObject(1,id);
//获取结果集
resultSet = ps.executeQuery();
while (resultSet.next()){
System.out.println(resultSet.getObject("username"));
}
JDBCUtils.CloseAll(connection,ps,resultSet);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
1.5 总结
JDBC规范了连接数据库的操作,无论连接什么种类的关系型数据库,均有相同的方法可以调用。
PS:本人萌新一枚,代码中若出现错误,请及时指正。