一、JDBC:
JavaDataBaseConnectivity(java数据库连接);
使用JDBC可以实现java和sql进行交互;如图:
二、JDBC的使用
创建一个Maven 的工程;
在Maven中有一个pom.xml文件中添加mysql的依赖(连接不同的sql有不同的依赖,具体可以去maven库中添加,推荐使用下载量最多的maven仓库链接):
将仓库中的html代码复制到pom.xml中即可:
<!--如下是mysqlserver在maven仓库中的依赖,复制到pom.xml中即可-->
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependencies>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.1.0.jre15-preview</version>
</dependency>
<!--如下是mysql-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
创建DBUtils类,以便后面调用;
package utlis;
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.apache.commons.dbcp.BasicDataSource;
public class DButils {
private static BasicDataSource ds;
static {
//创建属性对象,该对象用于读取属性配置文件
Properties ps =new Properties();
//得到文件的输入流
InputStream ips=DButils.class.getClassLoader().getResourceAsStream("jdbc_tpm.properties");
try {
ps.load(ips);
} catch (Exception e) {
e.printStackTrace();
System.out.println("系统文件加载失败");
}
String driver =ps.getProperty("driver");
String url=ps.getProperty("url");
String username=ps.getProperty("username");
String password=ps.getProperty("password");
//创建连接池对象
ds=new BasicDataSource();
//设置数据连接信息
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setMaxActive(5);
ds.setInitialSize(3);
}
public static Connection getConn() throws Exception {
Connection conn=ds.getConnection();
//System.out.println("连接成功:"+conn);
return conn;
}
}
然后写个测试类测试下代码:
package JDBCT;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import utlis.DButils;
public class jdbcTeest {
public static void main(String[] args) {
//创建列表存储查询的数据
List<String> list=new ArrayList<String>();
//System.out.println("开始");
//获取连接
try(Connection conn=DButils.getConn()) {
System.out.println("开始");
//查询语句
String sql="select * from motor";
PreparedStatement ps=conn.prepareStatement(sql);
//获取数据结果
ResultSet rs=ps.executeQuery(sql);
System.out.println("连接成功");
//next获取数据
while(rs.next()) {
String name=rs.getString(1);
String num=rs.getString(2);
//System.out.println(name+":"+num+";");
list.add(name);
list.add(num);
}
} catch (Exception e) {
e.printStackTrace();
}
//通过循环遍历列表数据集
for(int i=0;i<list.size();i++) {
System.out.println(list.toString());
System.out.println(list.get(i));
}
}
}
查询结果信息:
[31, 2020-01-09, 32, 2020-01-09, 33, 2020-01-09, 34, 2020-01-09, 35, 2020-01-09, 36, 2020-01-09, 37, 2020-01-09, 38, 2020-01-09, 39, 2020-01-09, 40, 2020-01-09, 41, 2020-01-09, 42, 2020-01-09, 43, 2020-01-09, 44, 2020-01-09, 45, 2020-01-09, 46, 2020-01-09, 47, 2020-01-09, 48, 2020-01-09, 49, 2020-01-09, 50, 2020-01-09, 51, 2020-01-09, 52, 2020-01-09, 53, 2020-01-09, 54, 2020-01-09, 55, 2020-01-09]
三、JDBC的批量操作
当有多条sql需要JDBC执行时,使用循环,每个循环将语句使用ps.addBatch()添加,然后使用ps.executeBatch()方法批量执行,为了防止数据遗漏,可以在循环中每遍历一定次数就执行一次批量操作,最后在循环外再执行一次。)
四、JDBC获取自动增长的值
当有自动增长的值时,我们插入数据时传入的是null,但是有需要这个数据时,使用preparestatement方法创建对象时指定返回自增主键对象,加入Statement.RETURN_GENERATED_KEYS属性,然后执行语句,最后使用getGeneratedKeys()方法获取自增值
实例代码如下:
//关键代码
PreparedStatement ps=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
//省略执行语句
ResultSet rs=ps.getGeneratedKeys()
//通过rs.next()获取值
本文到此结束!欢迎指正!
另附上一篇比较详细的博文比较详细:
https://blog.csdn.net/qq_22172133/article/details/81266048