JAVA 4.2.1 JDBC使用

一、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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值