目录
入门级
思路
总结一下就这几步
1 加载mysql驱动
2 获取数据库连接对象
3 初始化SQL执行对象(具体值指Statement)
4 定义SQL语句
5 将SQL语句绑定给SQL执行对象并执行获取返回结果(具体返回的是指ResultSet对象)
6 解析返回结果
7 关闭连接
//主方法调用即可 public static Connection getconn () throws SQLException { //1 加载驱动 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } //2 获取数据库连接 String connstr="jdbc:mysql://127.0.0.1:3306"; String username = "root"; String password = "xx"; Connection conn=DriverManager.getConnection(connstr,username,password); return conn; } public static void selectDbAPI() throws SQLException { //获取conn Connection conn = getconn(); //初始化SQL执行对象 Statement sta1 = conn.createStatement(); //定义SQL String sqlString1 = "select * from pythondb.api_py"; //执行SQL ResultSet resultSet = sta1.executeQuery(sqlString1); //解析返回结果 ArrayList<APIinstanceClass> arrs = new ArrayList<>(); while (resultSet.next()) { int id=resultSet.getInt("id"); String title= resultSet.getString("title"); String content=resultSet.getString("content"); String href = resultSet.getString("href"); arrs.add(new APIinstanceClass(id,title,href,content)); } for (APIinstanceClass api1:arrs) { System.out.println(api1.id+"\n"+api1.title+"\n"+api1.href + "\n"+api1.content); } conn.close(); } //实体类,新建 public class APIinstanceClass { public int id; public String title; public String href; public String content; public APIinstanceClass(int id,String title,String href,String content) { this.id = id; this.title = title; this.href = href; this.content = content; } @Override public String toString() { System.out.println("ID "+id + " title "+title + " href "+href + " content "+content); return ""; } }
预编译方式
思路
前面的思路和入门级一样只不过这边初始化的对象不是Statement了,而是预编译对象Preparement
具体如下
1 加载mysql驱动
2 获取数据库连接对象
3 定义带占位符(?)的SQL语句
4 初始化预编译SQL对象(具体值指Preparement)并绑定SQL语句(带占位符的)
5 填充使用Preparement对象填充SQL中的占位符
5 执行Preparement对象并执行获取返回结果(具体返回的是指ResultSet对象)
6 解析返回结果
7 关闭连接
mysql中
预编译方式进行操作
优点
多次执行相同类型的sql时更快,还能有效防止SQL注入
预编译定义
prepare statement_1 from "select * from api_py where id=?"
设置参数并填入相应参数(@加一些字符串形成一个变量)
set@ID1=2
execute statement_1 using @ID1
删除预编译
deallocate prepare statement_1
JDBC中
public static void Setprapare() throws SQLException
{
//建立连接
Connection conn = getconn();
//定义sql
String sql1="select * from pythondb.api_py where id=? or title=?";
//初始化预编译对象
PreparedStatement pstmt = conn.prepareStatement(sql1);
//填充sql(填充?占位符)
pstmt.setInt(1, 12);
pstmt.setString(2,"每日星座运势API接口");
//执行预编译对象
ResultSet res = pstmt.executeQuery();
//解析结果
while (res.next()) {
//易错点,这里的索引是从1开始的
APIinstanceClass aPI= new APIinstanceClass(res.getInt(1),res.getString(2),res.getString(3),res.getString(4) );
aPI.toString();
}
conn.close();
}
数据库连接池的使用
1 下载jar包
本来要去官网的但是进不去!
好吧我们使用下面的网站下载去
druid-1.1.9.jar下载及Maven、Gradle引入代码,pom文件及包内class -时代Java (nowjava.com)
2 导入jar包
3 新建配置文件
如下两图,看图操作
4 配置配置文件
配置资源文件,代码如下
注意修改为自己的用户名与密码
driverClassName=com.mysql.jdbc.Driver
#不指定数据库
url=jdbc:mysql://127.0.0.1:3306?useSSL=false&useServerPrepStmts=true
#指定数据库
#url=jdbc:mysql://127.0.0.1:3306/数据库名?useSSL=false&useServerPrepStmts=true
username=root
password=xxx
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
5 开始使用
Java代码
思路
1 先使用inputstream读取配置文件
2 把配置文件传给DruidDataSourceFactory.createDataSource,同时创建了数据库连接池对象
3 将数据库连接池对象保存为全局静态变量
4 通过全局变量进行调用(.getConnection())获取数据库连接对象
import com.alibaba.druid.*;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
public class Main {
static DataSource Cool;
public static void main(String[] args) throws SQLException {
try {
initDbCool();
selectDBcool();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//使用数据库连接池
public static void selectDBcool()throws Exception {
//获取数据库连接
Connection conn= Cool.getConnection();
//接下来的操作都一样了
}
//初始化数据库连接池
public static void initDbCool() throws Exception {
//1.导入jar包
//2.定义配置文件
//3. 加载配置文件
//新建配置文件对象
Properties prop = new Properties();
//这里是加载配置文件()中是你的配置文件的目录
prop.load(new FileInputStream("JDBCLearn/src/druid.properties"));
//4. 获取连接池对象
//然后我们新建一个全局静态DataSource变量方便我们使用
Cool= DruidDataSourceFactory.createDataSource(prop);
}
}