概述
文章目录
- JDBC使用步骤
- 1. 加载驱动
- 2. 数据库url配置
- 3. JDBC执行SQL语句
- 4. ResultSet
- 完整代码实例
JDBC使用步骤
1. 加载驱动
- 第一种方法Class.forName(); 将驱动程序的类文件动态加载到内存中,并将其自动注册
Class.forName("com.nysql.cj.jdbc.Driver")
实际应用会有ClassNotFoundException,所以还应该用try-catch
- 第二种方法, 使用静态方法DriverManager.registerDriver():
Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
实际应用会有ClassNotFoundException,所以还应该用try-catch
不同数据库的驱动名称:
数据库 | JDBC名称 | 网址url格式 |
---|---|---|
MYSQL8 | com.mysql.cj.jdbc.Driver | jdbc:mysql://hostname:3306/databaseName?serverTimezone=UTC |
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://hostname:3306/databaseName |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2:hostname:port Number / databaseName |
ORACLE | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@hostname:port Number:databaseName |
SYBASE | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:hostname:port Number / databaseName |
2. 数据库url配置
DriverManager.getConnection()方法建立与数据库的连接
getConnection()有三个重载方法:
-
getConnection(String url)
-
getConnection(String url, Properties prop)
用法: -
getConnection(String url, String user, String password)
创建数据连接对象
String URL = "jdbc:mysql://hostname:3306/databaseName?serverTimezone=UTC"; String userName = "name"; String passWord = "password"; Connection connection = DriverManager.getConnection(URL, userName, passWord);
3. JDBC执行SQL语句
-
一旦获取了与数据库的connection,便可以与数据库进行交互。JDBC中,Statement 和 PreparedStatement接口定义了发送SQL语句命令并从数据库接收数据的方法和属性
-
Statement:
在使用Statement执行sql语句前,使用connection.createStatement()创建一个对象Statement statement = connection.createStatement() //创建方法,记得关闭Statement对象 Statement stmt = null; try { stmt = connction.createStatement( ); . . . } catch (SQLException e) { . . . } finally { stmt.close(); }
Statement对象常用的三个方法:
boolean execute(String SQL); //如果可以检索到ResultSet对象,则返回一个布尔值true; int executeUpdate(String SQL); //返回受SQL语句执行影响的行数 ResultSet executeQuery(String SQL); //返回一个ResultSet对象
-
PreparedStatement与sql注入
- 什么是sql注入?
- 为什么使用PreapredStatement可以防止使用Statement时出现的sql注入问题?
4. ResultSet
- ResultSetS是通过Statement对象执行executeQuery()方法产生的对象,代表所查询到的结果集
- ResultSet()对象有很多方法,可以通过这些方法获取信息
- next(); 判断是否还有下一条结果,类似与迭代器的next()方法
- getXXX(String columnLabel); 如getInt(), getString(), getDate()等
完整代码实例
import java.sql.*;
public class Demo2 {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
//加载驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // 可能随着mysql版本变化而变动
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
}
try {
// 获得链接 DriverManager.getConnecton(),该函数有多个重载;
String url= "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String userName = "root"; //数据库用户名
String passWord = "8888"; //数据库密码
connection = DriverManager.getConnection(url, userName, passWord);
// 定义sql,创建状态通道 Statement: connection.createStatement(); ResultSet:statement.executeQuery("sql语句");
statement = connection.createStatement();
//当对表执行增删改时,使用executeupdate(), 返回一个整数,代表数据库表中受影响的行数
int result = statement.executeUpdate("insert into student(stuName, sex, gradeID) values ('周扒皮','男', 4)");
if (result > 0) {
System.out.println("修改成功!!!");
} else {
System.out.println("修改失败!!!");
}
// 修改表
int result2 = statement.executeUpdate("update student set passwd='123456'");
System.out.println("result2: " + result2);
//删除部分信息
int result3 = statement.executeUpdate("delete from student where stuName='哈皮'");
System.out.println("result3: " + result2);
// 取出结果和信息 getXXXX(表的列名)
while (resultSet.next()){
System.out.println(resultSet.getString("stuName") + " " +
resultSet.getDate("birthday") + " " +
resultSet.getInt("gradeID"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭资源, 注意顺序
if (resultSet != null) {
resultSet.close();
}
if (statement != null){
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
最后
以上就是老实流沙为你收集整理的JDBC使用步骤JDBC使用步骤的全部内容,希望文章能够帮你解决JDBC使用步骤JDBC使用步骤所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复