【MySQL】JDBC编程
https://i-blog.csdnimg.cn/direct/f754c7be68b148bfa6995f197c1a866b.jpeg
接待关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,接待指出~
目录
代码连接数据库的 前期准备
通过代码利用JDBC的API
创建数据源对象
给数据源对象设置必要属性
setUrl
setUser
setPassword
建立网络连接
发送到服务器 实行
释放资源
完整代码 插入数据
用户自行输入内容
查询操纵代码
编辑
代码连接数据库的 前期准备
针对数据库的操纵,现实工作中 很少会直接通过 命令行/图形化 客户端来操纵数据库,更多是通过代码(C++,Java,Python,Go.....)操纵数据库,前提数据库要提供一组API(Application Programming Interface 应用程序编程接口,在库中的类/方法/函数就可以称为API)供其他程序来利用
每个数据库的api都是自成一套体系,Java自身指定了一套API,其他数据库都要把自己的API转换成和Java这一套兼容的API(即JDBC),对于Java程序员,只需要学习一套api就可以应对各种数据库了
mysql官方提供了一个mysql-connector第三方库 将MySQL原生的C的API转换成 兼容JDBC的Java的API
mysql-connector 是第三方库,需要自己下载,推荐取maven中央仓库下载
以下是下载步调:
https://i-blog.csdnimg.cn/direct/c257ece161794465b0bd9244b838a3ee.png
如果mysql 服务器是8系列,connector 也必须利用8版本(5版本同理)
https://i-blog.csdnimg.cn/direct/f41e30564e5a4ad0b975cf25fe8ea72c.png
https://i-blog.csdnimg.cn/direct/0f9d10d894c945f08fa1fbe935b0d6de.png
下载好jar包 ,在idea里创建一个项目,拷贝到自己创建的一个目录(这里演示的是'lib' ),右键这个目录,选择 add as library(告诉idea,这个lib目录是一个'库'目录),添加完 '库'后,此时idea就能自动分析出jar包里的内容
https://i-blog.csdnimg.cn/direct/728b0c68660a40f3b784fe2b80da125c.pnghttps://i-blog.csdnimg.cn/direct/2010807a1cec48eebd14d46eab85f635.png
通过代码利用JDBC的API
下面通过演示 用代码操纵数据库 并 插入数据的效果
创建数据源对象
由于DataSource是一个Interface,不能new出来,需要实现这个接口的子类(MysqlDataSource())
https://i-blog.csdnimg.cn/direct/e3e312d7db3a4438aa806533f178940d.png
//1.创建数据源对象
DataSource dataSource =new MysqlDataSource();
//给数据源对象 设置必要的属性
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("111111"); 给数据源对象设置必要属性
setUrl
设置 数据库服务器的 位置
URL称为 "唯一资源定位符" 用来描述一个 网络上的资源的位置,数据库也可以明白为一种网络资源
代码中setUrl里的: jdbc:mysql://127.0.0.1:3306/test1characterEncoding=utf8&usesSL=false(不用记,知道含义就行)
https://i-blog.csdnimg.cn/direct/e6fc07989d9d4e6a9bf6651d5c80c672.png
setUser
设置 访问服务器的账户
root 是 mysql自带用户,管理员用户,权限是最高的
setPassword
设置 访问服务的密码 (你安装数据库时 设置的密码)
建立网络连接
//2.和数据服务器建立网络连接
dataSource.getConnection();
Connection connection =dataSource.getConnection();
System.out.println(connection); https://i-blog.csdnimg.cn/direct/2d5b0328c6c94e268390f1f17dc18791.png
https://i-blog.csdnimg.cn/direct/496e42223c1845b2b6b33adbd68c468a.png
https://i-blog.csdnimg.cn/direct/8577373e46894209848bd5b69ed18195.png
构造sql语句
//3.程序构造sql语句
String sql ="insert into student values(1,'张三')";
PreparedStatement statement = connection.prepareStatement(sql);
https://i-blog.csdnimg.cn/direct/f536df5217e840eca566f56048d561a2.png
发送到服务器 实行
//把sql语句发送到服务器上,让服务器执行
int n=statement.executeUpdate();//n表示执行的语句数量
System.out.println(n);//查看要几行被影响了
https://i-blog.csdnimg.cn/direct/d0648451dd354d37943fcf3945003bb0.png
释放资源
释放资源的顺序要和创建资源的顺序 相反
//5.释放上述资源
statement.close();
connection.close(); 完整代码 插入数据
update/ delete 代码完全一样,只是把string sql里的内容换了
public static void main(String[] args) throws SQLException { //1.创建数据源对象
DataSource dataSource =new MysqlDataSource();
//给数据源对象 设置必要的属性
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("111111"); //2.和数据服务器建立网络连接
dataSource.getConnection();
Connection connection =dataSource.getConnection();
System.out.println(connection); //3.程序构造sql语句 String sql ="insert into student values(1,'张三')"; //4.把sql语句发送到服务器上,让服务器实行 PreparedStatement statement = connection.prepareStatement(sql); int n=statement.executeUpdate(); //5.释放上述资源
statement.close();
connection.close(); } 插入数据后,检察数据库,插入成功
https://i-blog.csdnimg.cn/direct/6b325293a76f427aafd26c61562de620.png
用户自行输入内容
在上面完整代码中 添加两处代码
//0.让用户输入id 和name
Scanner scanner= new Scanner(System.in);
System.out.println("请输入id: ");
int id = scanner.nextInt();
System.out.println("请输入name: ");
String name =scanner.next(); //3.程序构造sql语句
String sql ="insert into student values(?,?)";
//把sql语句发送到服务器上,让服务器执行
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1,id);//1说明替换第一个问号
statement.setString(2,name);
int n=statement.executeUpdate(); https://i-blog.csdnimg.cn/direct/8992ddd659f94270b5fe5a0000940d32.png
查询操纵代码
select 操纵和上面操纵相比 都了个"遍历效果集合" 步调
//查询 public static void main(String[] args) throws SQLException { //1.创建数据源对象
DataSource dataSource =new MysqlDataSource();
//给数据源对象 设置必要的属性
((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("111111"); //2.和数据服务器建立网络连接 dataSource.getConnection(); Connection connection =dataSource.getConnection(); //3.程序构造sql语句 String sql ="select * from student"; PreparedStatement statement = connection.prepareStatement(sql); //4.实行sql ResultSet resultSet=statement.executeQuery(); //5.遍历效果集合 while(resultSet.next()){ //循环 针对一行数据进行处理 System.out.println(resultSet.getInt("id")); System.out.println(resultSet.getString("name")); } //6.释放上述资源 resultSet.close(); statement.close(); connection.close(); } https://i-blog.csdnimg.cn/direct/abeda18a0a234a36953bd665352ac91f.png
https://i-blog.csdnimg.cn/direct/ff442c0a9fe2401bbf1638ed93178840.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]