JDBC的连接

本文介绍Java数据库连接(JDBC)的基本概念及使用方法,包括连接数据库、执行SQL语句、处理结果集等步骤,并提供示例代码。

  JDBC Java Database connectivity

  Java数据库连接规范(一套接口) Sun公司提供的

  四个核心类 

  DriverManager 创建连接

  Connection 连接类

  Statement 执行sql语句

  ResultSet 结果集

  

  JDBC连接步骤

  1.注册驱动

  2.获取连接 Connection

  3.获取sql语句的执行对象 Statement

  4.执行sql语句 返回结果集 ResultSet

  5.处理结果集

  6.关闭资源


1.注册驱动

//这种注册方式相当于注册了两遍

//Driver类内部的静态代码块 已经注册了一遍

//DriverManager.registerDriver(new Driver());

//注册驱动

//直接把该类加载内存当中 参数是全限定类名 包名+类名

Class.forName("com.mysql.jdbc.Driver");


2.获取连接

//获取连接对象方式一

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc","root", "123456");

//获取连接的方式二

Properties info = new Properties();

//添加用户名,密码

info.setProperty("user","root");

info.setProperty("password","123456");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc", info);

//获取连接方式三 相当于使用了一个get请求 携带参数,访问链接

String url = "jdbc:mysql://localhost:3306/myjdbc?user=root&password=123456";

Connection conn = DriverManager.getConnection(url);

3.获取执行sql语句的对象

Statement statement = conn.createStatement();

4.执行sql语句 返回结果集

//字段查询语句结果集中添加的索引要和查询语句中的字段对应

String sql = "select * from users";

ResultSet resultset = statement.executeQuery(sql);

5.处理结果集

//循环遍历结果集 输出结果

//有记录 next()方法 返回true 反之

while(resultset.next()){

//打印数据

//注意:查询数据库时,索引从1开始

System.out.println(resultset.getObject(1));

System.out.println(resultset.getObject(2));

}

6.关闭资源

resultset.close();

statement.close();

conn.close();

增删改查

@Test

public void testInsert() throws Exception {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/myjdbc?user=root&password=123456";

Connection connection = DriverManager.getConnection(url);

Statement statement = connection.createStatement();

String sql = "insert into users values(5, 'jianzhong', '123123', '123123@qq.com', '2018-03-22')";

int row = statement.executeUpdate(sql);

System.out.println(row);

if (row > 0) {

System.out.println("插入成功");

}

statement.close();

connection.close();

}


@Test

public void testUpdate() throws Exception {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/myjdbc?user=root&password=123456";

Connection connection = DriverManager.getConnection(url);

Statement statement = connection.createStatement();

String sql = "update users set name='xuesheng'";

int row = statement.executeUpdate(sql);

System.out.println(row);

if (row > 0) {

System.out.println("更新成功");

}

statement.close();

connection.close();

}


@Test

public void testSelect() throws Exception {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/myjdbc?user=root&password=123456";

Connection connection = DriverManager.getConnection(url);

Statement statement = connection.createStatement();

// 查询

String sql = "select id, name, email from users";

ResultSet resultSet = statement.executeQuery(sql);

// 处理结果集 while (resultSet.next()) {

// 可以直接填字段名称

system.out.print(resultSet.getObject("id") + " ");

System.out.print(resultSet.getObject("name") + " ");

System.out.println(resultSet.getObject("email") + " ");

}

resultSet.close();

statement.close();

connection.close();

}


@Test

public void testDelete() throws Exception {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/myjdbc?user=root&password=123456";

Connection connection = DriverManager.getConnection(url);

Statement statement = connection.createStatement();

String sql = "delete from users where id=5";

int row = statement.executeUpdate(sql);

System.out.println(row);

if (row > 0) {

System.out.println("删除成功");

}

statement.close();

connection.close();


连接数据库的异常处理

public class DemoException {


public static void main(String[] args) {
Connection conn = null;
Statement stat = null;
ResultSet resu = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/myjdbc";
conn = DriverManager.getConnection(url,"root","123456");
stat = conn.createStatement();
String sql = "select * from users";
resu = stat.executeQuery(sql);
//处理结果集(把数据的记录封装到对象中)
//把对象保存到数组当中并遍历打印
List<User> u = new ArrayList<>();
while(resu.next()){
//创建对象
User user = new User();
user.setId(resu.getInt("id"));
user.setName(resu.getString("name"));
user.setPassword(resu.getString("password"));
user.setEmail(resu.getString("email"));
user.setBrithday(resu.getDate("brithday"));
//放入集合中
u.add(user);
}
//遍历查看
for(User user:u){
System.out.println(user);
}

} catch (ClassNotFoundException e) {
//停止程序
throw new RuntimeException("驱动加载失败");
}catch(SQLException e){
throw new RuntimeException("");
}finally{
//关闭资源前要做非空判断,防止空指针出现
if(resu != null){
try{
resu.close();
}catch(SQLException e){
throw new RuntimeException("关闭失败");
}
//加快系统回收的速度
resu = null;
}
if(stat != null){
try{
stat.close();
}catch(SQLException e){
throw new RuntimeException("关闭失败");
}
//加快系统回收的速度
stat = null;
}
if(conn != null){
try{
conn.close();
}catch(SQLException e){
throw new RuntimeException("关闭失败");
}
//加快系统回收的速度
conn = null;
}

}

}
}


JDBC工具类

public class JDBCUtil {

private static String driverClass;

private static String url;

private static String user;

private static String password;

static{

//使用系统类来读取配置文件

ResourceBundle rb = ResourceBundle.getBundle("dbinfo");

//获取文件中的数据

driverClass = rb.getString("driverClass");

url = rb.getString("url");

user = rb.getString("user");

password = rb.getString("password");

}

    //使用静态代码块加载驱动 读取配置文件

// static{

// Properties properties = new Properties();

// try{

// FileInputStream fis = new FileInputStream("sre/dbinfo.properties");

// properties.load(fis);

// //读文件

// driverClass = properties.getProperty("driverClass");

// url = properties.getProperty("url");

// user = properties.getProperty("user");

// password = properties.getProperty("password");

// }catch(Exception e){

//

// }

// //获取数据库连接的方法

//        try{

//        Class.forName(driverClass);

//        }catch(Exception e){

//        

//        }

// }

// 获取数据库连接方法

public static Connection getConnection() throws ClassNotFoundException, SQLException {

  return DriverManager.getConnection(url, user, password);

}

//关闭数据库的方法

public static void closeAll(ResultSet resultSet,Statement statement,Connection connection){

//关闭资源前要做非空判断,防止空指针出现

if(resultSet != null){

try{

resultSet.close();

}catch(SQLException e){

throw new RuntimeException("关闭失败");

}

//加快系统回收的速度

resultSet = null;

}

if(statement != null){

try{

statement.close();

}catch(SQLException e){

throw new RuntimeException("关闭失败");

}

//加快系统回收的速度

statement = null;

}

if(connection != null){

try{

connection.close();

}catch(SQLException e){

throw new RuntimeException("关闭失败");

}

//加快系统回收的速度

connection = null;

}

}


}




















 




【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值