当前位置: 首页 > news >正文

JDBC编程

目录

1. 添加目录

2.编程

3.?的使用


1. 添加目录

将安装好的驱动包复制下来

然后在这里新增一个目录

将复制好的驱动包复制进去

对其右键,选中添加为库

2.编程

在编程的时候,大部分代码都是固定的,会变的大多都是SQL语句,所以我就将一些比较零散注意事项写到代码注释里了

setUrl里面的内容代表数据源

其中jdbc:mysql: 是一个url 表示给jdbc的mysql使用的

127.0.0.1 是数据库服务器所造的IP地址,每台计算机都有自己的IP地址,而这一串数字相当于类里面的this,表示当前使用的计算机

3306 是端口号,在安装MySQL时,默认为3306(不改的化)

3306/后面 到 ?前面的test 是你使用的库的名字

&后面的 描述了请求的字符编码形式(当前数据库的字符集)

在后面的useSSL=false 是关闭加密功能

上面的这一串需要修改就只有数据库名了(基本上)

public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");

        //选择java.sql  getConnection()需要添加异常声明
        Connection connection = dataSource.getConnection();

        String sql = "insert into student values(1,'张三'),(2,'李四')";//SQL语句
        PreparedStatement statement = connection.prepareStatement(sql);//选择java.sql

        int ret = statement.executeUpdate();
        System.out.println(ret);
        System.out.println(statement);
    }

SQL语句如果是增删改,那么后面的statement需要用executeUpdate方法

它可以返回SQL语句所修改的行数

如果是查询语句则需要用 executeQuery 接收返回的数据

同时 executeQuery 的返回值需要用 ResultSet(java.sql) 这个类型去接收

具体情况如下:

public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("123456");
        Connection connection = dataSource.getConnection();//选择java.sql  getConnection()需要添加异常声明
        String sql = "select * from student";//SQL语句
        PreparedStatement statement = connection.prepareStatement(sql);//选择java.sql
        ResultSet resultSet = statement.executeQuery();
        while(resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id: " + id + " name: " + name);
        }
        System.out.println(statement);
    }

在用ResultSet接收后 要使用while循环,循环条件为resultSet.next() -- 代表一次输出一行

接收数据用get...()方法, 括号中填的是列名

3.?的使用

int n = scanner.nextInt();
String sql = "select * from student where id = ?";//SQL语句
PreparedStatement statement = connection.prepareStatement(sql);//选择java.sql
statement.setInt(1,n);

 在语句中的问号代表一个数据,可以使用statement.set...() 这个方法去赋值

它的第一个参数传入整形,代表赋值的是第几个问号,实例中代表:对第一个问号赋值为变量n

?的使用可以提高代码的安全性.

相关文章:

  • HTML+CSS期末大作业 中国传统美食网站设计 节日美食13页 html5网页设计作业代码 html制作网页案例代码 html大作业网页代码
  • 基于Java+Spring+Vue+elementUI大学生求职招聘系统详细设计实现
  • matlab在管理学中的应用简matlab基础【二】
  • 【安装Ubuntu18.04遇到的问题】未找到WIFI适配器
  • 发明专利与实用新型专利的不同
  • 【Educoder作业】CC++数组实训
  • Qt+Win10使用QAxWidget控件实现远程桌面控制
  • java毕业设计现有传染病查询系统mybatis+源码+调试部署+系统+数据库+lw
  • C++ 语法基础课4 —— 数组
  • 【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
  • 软件测试 | 怎么写测试用例?设计测试用例的思路和方法......
  • shell命令以及运行原理
  • 【MySQL】 B+ 树存储的原理
  • 网络安全——SQL注入之安全狗bypass深度剖析
  • java每日一练(2)
  • eclipse(luna)创建web工程
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java方法详解
  • Linux链接文件
  • React Native移动开发实战-3-实现页面间的数据传递
  • React16时代,该用什么姿势写 React ?
  • vue.js框架原理浅析
  • webgl (原生)基础入门指南【一】
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 关于Java中分层中遇到的一些问题
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 普通函数和构造函数的区别
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 阿里云移动端播放器高级功能介绍
  • ​TypeScript都不会用,也敢说会前端?
  • ​业务双活的数据切换思路设计(下)
  • # 透过事物看本质的能力怎么培养?
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.each()与$(selector).each()
  • (11)MSP430F5529 定时器B
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .sh
  • /run/containerd/containerd.sock connect: connection refused
  • @RestController注解的使用
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [AR Foundation] 人脸检测的流程
  • [ARM]ldr 和 adr 伪指令的区别
  • [BZOJ] 3262: 陌上花开