MySQL的JDBC编程
使用 java代码操作 数据库
jdbc统一了各种数据库的 api
准备阶段
首先要准备
- 编辑语言的安装:java jdk1.8
- 数据库
- 数据库驱动包 :
- 在中央仓库下载
- 搜索MySQL 第一个就是 MySQL Connector/j
- 下载完成后 在 IDEA 中导入 这个包
- 打开 IDEA 新建一个 java项目
- 新建一个目录
- 然后 将下载好的 复制进去
- 右键目录 添加到库(add as library)
开始 JDBC 编程
-
先 建立 数据源 找到数据库的位置
DataSource dataSource = new MysqlDataSource();
dataSource 就是 一个数据源 然后利用他的方法 去找到 数据库的位置
((MysqlDataSource) dataSource).setUrl()
setUrl() 设置他的 Url
Url 可以理解成一个网址 他包含了网站信息 Ip地址 端口 以及一些元素 内部设定
具体看一下这里的Url
("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false")
127.0.0.1 是 数据库所存在的 Ip 地址
3306 是 数据库所在端口
这里可以理解成 IP 是你的家庭地址 端口是你的电话号码
方便锁定数据库
java109 是 数据库的名字
? 指的是 后面开始 是 这个数据库的一些内部元素
characterEncoding=utf8 指定字符集为 utf8
useSSL=false 服务器证书 如果选择了 true 就会验证你的证书 不建议在 没有服务器身份验证的情况下建立 SSL 链接
设置用户名以及数据库密码
((MysqlDaraSource) dataSource).setUser("root");//管理员 ((MysqlDaraSource) dataSource).setPassword("111111");//密码
-
建立数据库的连接 再找到数据库后进行对数据库的链接 注意这里会抛出异常
Connection connection = dataSource.getConnection();
-
构造 sql 就像 在 MySql 自带的服务端中 构造sql 一样 不过要增加点方法:
String sql = "insert into student values(1,'张三')"; PreparedStatement statement = connection.prepareStatement(sql);
prepareStatement:意思是 准备陈述
在这里 指的是 预准备 预处理
也可以把字符串格式的 sql 直接发送给 mysql 服务器 ,但是这样说做 写的 字符串sql 有可能是 语法错误之类
mysql 服务器需要对 sql 进行解析 和效验
mysql 服务器是服务于 多个客户的 这样开销就很大
预处理:
先解析检查 sql 看 sql 有没有什么问题
解析完毕后会得到接哦古话数据,直接把解析好的结构化数据发给数据库服务器,服务器就省下了这步工作
-
把 sql 发送给服务器
int i = preparedStatement.executeUpdate();
这里的 i 显示的是 处理了 多少行数据
executeUpdate() : 是针对 写数据 比如 :增 改 删
executeQue() : 是针对 读数据 比如 :查
-
执行完毕 关闭链接 释放资源 后建立的先释放
preparedStatement.close(); connection.close();
案例
这里 写一个 录入学生的一个案例
public class Demo01{
public static void main(String[] args) throws SQLException{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名");
String name = scanner.nextLine();
System.out.println("请输入你的学号");
int id = scanner.nextInt();
//1.建立数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("111111");
//2.创建连接
Connection connection = dataSource.getConnection();
//3.构造 sql
String sql = "insert into student values(?,?)";
PreparedStatement statement = connection.preparedStatement(sql);
statement.setInt(1,id);
statement.setString(2,name);
//4.把 sql 发送给服务器
statement.executeUpdate();
//5.执行完毕
statement.close();
connection.close();
}
}
这是一个 写操作的 sql
下面写一个 查的 sql
public class Demo01{
public static void main(String[] args) throws SQLException{
//1.先建立数据源
DataSource dataSource = new MysqlDataSource();
((MysqlDatalSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java109?characterEncoding=utf8&useSSL=false");
((MysqlDatalSource) dataSource).setUser("root");
((MysqlDatalSource) dataSource).setPassword("111111");
//2.连接到数据库
Connection connection = dataSource.getConnection();
//3.构造 sql
String sql = "select * from student";
PreparedStatement statement = connection.preparedStatement(sql);
//4.把 sql 发送给服务器
ResultSet resultSet = statement.executeQuery();
//5.遍历结果集 取出结果
while(resultSet.next()){
int id = resultSet.getInt("id");
String name = result.getString("name");
System.out.println("id="+id+"name="+name);
}
//6.释放内存
resultSet.close();
statement.close();
connection.close();
}
}
对比写
查操作多了一步 遍历
resultSet 是一个 结果集 用于 存放查到的数据库
遍历这个 结果集 得到结果
标签:JDBC,数据库,编程,connection,dataSource,statement,sql,MySQL,服务器 From: https://www.cnblogs.com/ljy2003/p/18463511