JDBC
来源:互联网 发布:矩阵和行列式的转换 编辑:程序博客网 时间:2024/05/16 09:40
简介
JDBC:全称是Java Database Connectivity,java数据库连接,从名字就可以看出来它的作用是用Java语言与数据库进行连接,从而执行一系列SQL语句,实现对数据库的操作。
步骤:
1. 加载数据库驱动:可以针对不同的数据库加载不同的驱动,从而为多种数据库提供访问。
2. 建立数据库连接:需要传递三个参数,即url、user和password,其中url中指定了数据库、host、端口号以及具体操作的那个数据库的名字,当在mysql workbench中新建一个数据库连接时可以看到这些信息,如下:
3. 执行SQL语句:推荐使用PreparedStatement接口(见下面PreparedStatement和Statement的区别)。
4. 处理返回结果:即获取返回结果中的某个字段值或者输出显示等等。
5. 关闭资源:一定不要漏掉哦,否则容易造内存泄漏。
例子(mysql版本)
在https://mvnrepository.com/获取mysql的配置代码粘贴到pom.xml文件中。
1. DBUtil类(这个类主要用于与数据建立连接,并返回一个Connection对象):
import java.sql.Connection;import java.sql.DriverManager;public class DBUtil { private static final String driveName="com.mysql.jdbc.Driver"; private static final String URL="jdbc:mysql://127.0.0.1:3306/News"; private static final String USER="root"; private static final String PASSWORD="123456"; public DBUtil(){} public static Connection connectToDb()throws Exception{ //加载驱动 Class.forName(driveName); //获得数据库的连接 Connection con= DriverManager.getConnection(URL, USER, PASSWORD); return con; }}
2.ExcuteSQL类(这个类主要用于执行一系列SQL语句,这里写了两个类方法用于servlet中调用):
import com.alibaba.fastjson.JSONObject;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;public class ExecuteSQL { //返回查询结果 public static ArrayList<JSONObject> getNewsInfo(int pageNumber, int pageSize)throws Exception{ //获取数据库连接 Connection con = DBUtil.connectToDb(); //查询数据 PreparedStatement ps; String sql = "SELECT * FROM News limit "+(pageNumber-1)*pageSize+","+pageSize; ps = con.prepareStatement(sql); ResultSet res = ps.executeQuery(); ArrayList<JSONObject> list = new ArrayList<JSONObject>(); //保存在list中 while(res.next()){ JSONObject job = new JSONObject(); job.put("id",res.getString("id")); job.put("title",res.getString("title")); job.put("key_word",res.getString("key_word")); job.put("content",res.getString("content")); job.put("url",res.getString("url")); job.put("reply",res.getString("reply")); job.put("source",res.getString("source")); job.put("postdate",res.getString("postdate")); list.add(job); } res.close(); con.close(); return list; } //返回数据条数 public static int getCount()throws Exception{ int count = 0; //获取数据库连接 Connection con = DBUtil.connectToDb(); //查询数据条数 PreparedStatement ps; ps = con.prepareStatement("select count(*) from News"); ResultSet res = ps.executeQuery(); while(res.next()){ count=res.getInt(1); } System.out.println("数据条数: "+count); res.close(); con.close(); return count; } }
PrepareStatement和Statement的区别:
PrepareStatement接口继承了Statement接口,但是相比于Statement具有以下优点:
1. PreparedStatement是预编译的,效率高。
2. 代码可读性和可维护性高。
3. 安全性好,可有效防止SQL注入攻击。
SQL注入攻击:由于web应用程序对用户输入数据的合法性没有判断,攻击者通过在web程序中添加一些额外的SQL语句,欺骗服务器执行一些恶意操纵。
- jdbc
- JDBC
- jdbc
- JDBC
- jdbc
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- JDBC
- jdbc
- JDBC
- JDBC
- jdbc
- mayavi运行出现with the gpu_shader4 extension is not supported
- 不借助第三个变量交换两个数值类型变量的值
- ACE中的Proactor介绍和应用实例
- spring in action书中5.3节中代码错误
- Git 初接触 (三) Git的撤销操作 git checkout -- <file>
- JDBC
- MySQL添加用户、删除用户与授权 MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 1.1 登录MYSQL:
- 关于ACE_Svc_Handler
- servlet-会话
- 常见的数据库优化策略(经典)
- VS2010编译C++项目error LNK1123错误解决办法
- Codeforces Round #453 (Div. 2)A,B,C
- 性别特么有这么重要么
- java--URL编码和解码