石家庄房产网站官网哪些网站discuz做的
石家庄房产网站官网,哪些网站discuz做的,贵阳公司电话号码大全,网站首页title怎么修改JDBC#xff08;Java Database Connectivity#xff09;是Java编程语言用于连接和操作数据库的API#xff08;Application Programming Interface#xff09;。它为开发人员提供了一组Java类和接口#xff0c;用于与各种关系型数据库进行通信。使用JDBC#xff0c;开发人…JDBCJava Database Connectivity是Java编程语言用于连接和操作数据库的APIApplication Programming Interface。它为开发人员提供了一组Java类和接口用于与各种关系型数据库进行通信。使用JDBC开发人员可以轻松地执行数据库操作如查询、插入、更新和删除数据。
JDBC提供了一种标准的方式来连接数据库并通过执行SQL语句与数据库进行交互。它允许开发人员使用Java代码来创建数据库连接、发送SQL语句并处理结果。通过JDBC开发人员可以跨不同的数据库系统如MySQL、Oracle、SQL Server等使用相同的编程接口进行数据库操作。
1. 引入JDBC驱动包
要想使用JDBC编程要先引入MySQL的JDBC驱动包JDBC驱动包就是Java对于数据库原生接口的封装这种驱动包属于第三方库并不包含在JDK中 所有需要把它下载下来并且引入项目中。
1.1 下载方法
打开网站https://mvnrepository.com/
点击上方的搜索框输入 mysql 然后点击 Search 然后点击如下图第二个搜索结果 然后来到如下界面向下找到对应自己的MySQL版本然后点击版本号进去 然后点击如图所示的jar即可下载 1.2 引入项目
1. 先创建一个项目 2. 右键图中的.idea然后点检 新建 / 目录 命名可任意一般命名为lib
3. 将下载好的jdbc驱动包复制然后粘贴到新建的目录中 3. 右击目录 点击添加到库 然后点击确定即可 2. JDBC编程步骤
2.1 创建数据源
数据库是服务器服务器可能可能在这台主机上也可能在其他主机上我们要明确这个服务器的位置才能对其进行操作
数据源就是描述你要操作的数据库在哪里
这里Java是通过 IP地址 端口号 数据库名 来定位数据库位置的 解释
IP地址 IP地址是描述一台主机在网络上的位置的机制通常由一串数字组成 端口号一台主机上有很多服务程序使用端口号区分不同的服务程序 注意
127.0.0.1 是一个特殊的IP地址叫做环回IPloopback表示本机
MySQL默认的端口号为3306
代码
//1.创建数据源
DataSource dataSource new MysqlDataSource();
//解释DataSource 是Java JDBC 中原生的API接口MysqlDataSource 是我们安装的驱动包中的内容
((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java1124?characterEncodingutf8uesSSLfalse);
((MysqlDataSource)dataSource).setUser(root);
((MysqlDataSource)dataSource).setPassword(123456);
解释
1. ((MysqlDataSource)dataSource).setUrl(jdbc:mysql://127.0.0.1:3306/java1124?characterEncodingutf8uesSSLfalse);
jdbc:mysql://表示使用JDBC连接到MySQL数据库。127.0.0.1表示数据库服务器的IP地址这里为本地主机。3306表示MySQL数据库服务器的端口号一般情况下默认为3306。java1124表示要连接的具体数据库名称。?characterEncodingutf8uesSSLfalse表示额外的连接参数。characterEncodingutf8指定字符编码为UTF-8确保正确处理中文等特殊字符。useSSLfalse禁用SSL连接
2. ((MysqlDataSource)dataSource).setUser(root);
这行代码设置了数据库连接的用户名。同样是将dataSource转换为MysqlDataSource类型然后调用setUser()方法将数据库连接的用户名设置为root这是一个常见的MySQL数据库的默认用户名拥有所有权限
3. ((MysqlDataSource)dataSource).setPassword(123456);
这行代码设置了数据库连接的密码。同样是将dataSource转换为MysqlDataSource类型然后调用setPassword()方法将数据库连接的密码设置为123456这是与用户名对应的数据库连接密码即我们安装MySQL时自己设置的密码 2.2 和数据库服务器建立连接
//2.和数据库服务器建立连接
Connection connection dataSource.getConnection();
//注意这里的Connection要使用java.sql包下的Connection
//使用getConnection()方法会抛出一个SQLException异常记得捕获或者抛出这个异常
2.3 构建一个SQL语句
1. 创建一个字符串类型的SQL语句 //注意末尾不需要加“;”
String sql insert into student values(1, Ting);
2 .将String类型的SQL语句转化为语句对象
//将String类型的SQL语句转化为语句对象
PreparedStatement statement connection.prepareStatement(sql);注意还有一个 Statement接口也可以完成该操作但是他们有一些区别如下 创建方式 Statement: 通过Connection对象的createStatement()方法创建。preparedStatement通过Connection对象的preparedStatement()方法创建需要传入SQL语句作为参数。 预编译 Statement不进行预编译每次执行SQL语句时都会将SQL语句发送给数据库进行解析和编译。preparedStatement在创建时进行了预编译即SQL语句被发送到数据库进行解析和编译并生成可复用的执行计划。这样在后续的执行过程中只需要传递参数即可无需重新解析和编译SQL语句提高了执行效率。 参数设置 Statement执行SQL语句时无法使用参数化查询所有的参数值都必须通过字符串拼接的方式直接嵌入SQL语句中。preparedStatement支持参数化查询可以使用占位符如?代替具体的参数值然后通过调用setXXX()方法设置参数的值。 防止SQL注入 Statement由于无法参数化查询容易受到SQL注入攻击。因为参数值直接嵌入到SQL语句中如果参数值未经过正确的处理可能会导致安全漏洞。preparedStatement使用参数化查询可以有效预防SQL注入攻击。参数值在设置时会被正确处理不会直接嵌入到SQL语句中从而提高了安全性。 2.4 把构造好的SQL语句发送给服务器执行
增删改操作使用 executeUpdate() 方法 返回值为int类型 即为影响的行数。
查询操作使用executeQuery() 方法 返回值为 ResultSet 为一个结果集
int n statement.executeUpdate();
System.out.println(n);2.5 释放资源
Connection connection 和 PreparedStatement statement 是需要释放资源的
因为它们占据了一些计算机重要的软/硬件资源 DataSource dataSource 不需要释放因为它只储存了 一些信息
使用close() 方法释放资源
//注意释放顺序要与创建顺序相反
statement.close();
connection.close(); 2.6 问题
在 2.3 中我们发现我们的SQL语句是写死的 如果要插入其他内容又需要重新修改代码显然这样是不科学的
解决方案
1. 字符串拼接
在构造SQL语句时我们使用字符串拼接的方式来构造
String sql insert into student values( id , name );
这样就把插入的内容改为可由用户输入了避免了修改代码
但是这样写任然存在一些问题
1.出的代码太过冗余杂乱
2.有sql注入攻击的风险
例如用户在输入时 输入 )drop database 2. 使用 preparedStatement 提供的占位符
String sql insert into student values(?, ?);
//将String类型的SQL语句转化为语句对象
PreparedStatement statement connection.prepareStatement(sql);
statement.setInt(1, id);//把第一个 设置为 id
statement.setString(2, name);//把第二个 设置为 name 2.7 查询
构造查询语句与增删改略有不同注意查询结果的打印方式即可 public static void main(String[] args) throws SQLException {//构造数据源DataSource datasource new MysqlDataSource();((MysqlDataSource)datasource).setUrl(jdbc:mysql://127.0.0.1:3306/java1124?characterEncodingutf8useSSLfalse);((MysqlDataSource)datasource).setUser(root);((MysqlDataSource)datasource).setPassword(123456);//连接数据库Connection connection datasource.getConnection();//构造SQL语句String sql Select * from student;PreparedStatement statement connection.prepareStatement(sql);//发送到服务器执行ResultSet result statement.executeQuery();while(result.next()){int id result.getInt(id);String name result.getString(name);System.out.println(id name);}//释放资源result.close();statement.close();connection.close();}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86222.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!