河北住房城乡建设厅官方网站中山seo推广优化
一.数据库编程的必备条件
编程语言:java c c++ Python
数据库 Oracle,MySQL,SQL Server
数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包
mysql=connector-java,需要就Java操作MySQL需要该驱动包
二.Java的数据库编程
JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是
Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java
开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

三.jdbc工作原理
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包
含一些通用的接口类。

JDBC优势:
Java语言访问数据库操作完全面向抽象接口编程
开发数据库应用不用限定在特定数据库厂商的API
程序的可移植性大大增强
MySQL是一个-服务器结构的程序






四.JDBC编程
1.创建项目

2.引入依赖
JDBC编程需要用到MySQL的驱动包
驱动包就是将mysql本身的API给转化成jdbc风格的
1)下载驱动包

去maven中央仓库去下载

https://mvnrepository.com/



2)导入到项目中
a)创建个目录,随便取名字

b)把刚才下载的jar文件拷贝到刚才的目录


c)右键刚刚的目录,有一个选项,佳作add as library


3)编写代码
1.创建DataSource对象,这个对象就描述了数据库服务器在哪里


父类引用指向子类实例



URL:Uniform Resource Locator
唯一资源定位符






2.建立连接



3操作数据库(插入)-构造语句



4.执行sql


5.释放资源

释放资源的时候先释放statement,再释放connection
先创建的后释放

4)总结

(42条消息) 如何查看MySQL的端口号?_安西宁的博客-CSDN博客_mysql8 查看端口
五.灵活处理插入删除数据
0.以前的方法

1.使用户输入

2.将id和name替换到insert语句对应的位置上

方法1,用字符串的拼接

方法2:替代写法

3.进行替换操作


4.打印拼接好的sql


六.注意事项
1.无法用idea连接



2.连接池


import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class JDBC {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);// 1. 创建好数据源DataSource dataSource = new MysqlDataSource();// 设置数据库所在的地址((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");// 设置登录数据库的用户名((MysqlDataSource) dataSource).setUser("root");// 这个是设置登录数据库的密码((MysqlDataSource) dataSource).setPassword("2222");// 2. 让代码和数据库服务器建立连接~~ 相当于到达了菜鸟驿站Connection connection = dataSource.getConnection();// 2.5 让用户通过控制台输入一下待插入的数据.System.out.println("请输入学号: ");int id = scanner.nextInt();System.out.println("请输入姓名: ");String name = scanner.next();// 3. 操作数据库. 以插入数据为例.// 关键所在就是构造一个 SQL 语句~// 在 JDBC 中构造的 SQL, 不必带上 ;// ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~String sql = "insert into student values(?, ?)";// 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"PreparedStatement statement = connection.prepareStatement(sql);// 进行替换操作.statement.setInt(1, id);statement.setString(2, name);System.out.println("statement: " + statement);// 4. 执行 SQL , 相当于扫码取件// SQL 里面如果是 insert, update, delete, 都使用 executeUpdate 方法.// SQL 里面如果是 select, 则使用 executeQuery 方法.// 返回值就表示这个操作, 影响到了 几行. 就相当于在控制台里输入 sql 之后, 得到的数字~int ret = statement.executeUpdate();System.out.println(ret);// 5. 此时 SQL 已经执行完毕. 然后还需要释放资源.statement.close();connection.close();}
}
七 .查找操作




import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class JDBCSelect {public static void main(String[] args) throws SQLException {// 查找数据库中的记录// 这个查找和前面的操作就不太一样了~~ 多了一个步骤, 要遍历结果集合~// 1. 创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("2222");// 2. 和数据库服务器建立连接Connection connection = dataSource.getConnection();// 3. (此处不输入条件了, 直接查找所有记录)// 4. 构造 SQLString sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);// 5. 执行 SQL.// 此处要使用的是 executeQuery.// executeUpdate 只能返回一个 int.// executeQuery 返回的是一个 ResultSet 对象. 可以把这个对象视为是一个 "临时表"ResultSet resultSet = statement.executeQuery();// 6. 遍历临时表, 拿到里面的数据.// resultSet 简单的当成一个类似于 "迭代器" 这样的东西来看待~// next 如果没有到达末尾, 就是返回 true, 要继续循环.// next 如果到达末尾, 就返回 false, 结束循环.while (resultSet.next()) {// 在这里就可以取这一行的数据了.// 通过 ResultSet 里面的 getXXX 方法, 来获取到这里指定的列.// 取 id, id 是整数, getIntint id = resultSet.getInt("id");// 取 name, name 是 String, getStringString name = resultSet.getString("name");System.out.println(id + ": " + name);}// 7. 关闭连接, 释放资源resultSet.close();statement.close();connection.close();}
}
八.workbench



