概述
jdbc的流程
1.在通过命令提示符net start mysql启动数据库服务
2.到mysql官网下载数据库驱动包,解压得到相应的jar包,将jar包拷贝到项目目录下并添加为库,这一步关键。https://dev.mysql.com/downloads/connector/j/
3.java连接数据库主要涉及的类为DriverManager类、Connection类、PreparedStatement类(采用预编译和动态指定参数的方法可以防止sql注入)(还有一个Statement类不具备安全性)、ResultSet类(用于查询数据的结果集保存,增删改不需要)
实列代码
1加载驱动类
用Class类的forname()方法,本质是注册一个驱动。
Class.forName("java.mysql.jdbc.Driver"); //这个路径是固定的,是Driver类在jar包中的路径
2.连接数据库
// 这个串是连接数据库的路径规约,按照自己的要求修改
String db_url = "jdbc:mysql://localhost//3306//xboot?useUnicode=true&characterset=utf8&useSSL=true";
String user = "****"//数据库的用户名
String psw = "****"//用户密码
Connection con = DriverManager.getConnection(db_url,user,psw); //这个连接本质是一个数据库对象
3 创建Statement对象执行sql语句或者根据数据库对象PrepareedStatement对象动态执行sql语句(推荐后者可以防止sql注入)
- 用Statement类实现(不推荐)
String sql = "select * from t_mytest where id=1";
Statement statement = con.createStatement();
4.处理结果集
ResultSet res = statement.executeQuery(sql); //执行查询语句,有多个方法,execute()可以执行全部sql语句,但是效率低一些
while(res.next()){
System.out.println(res.getobject("id")); //获得结果有多个方法,按需取用
}
5.释放连接
//关闭连接
res.close();
statement.close();
con.close();
- 用PreparedStatement类实现(推荐)
String sql = "select * from t_mytest where id=?"; //这里的?是占位符,后边需要动态设定参数,防止sql注入
PreparedStatement statement = con.preparedStatement(sql); //和上边区别,需要传入参数
long id = 1;
statement.setLong(1,id); //有多个方法根据数据库数据类型确定,若不知可以这样
//statement.setBytes(1,"1".getBytes()) //用字节流
ResultSet res = statement.executeQuery(); //这里和上边不一样,没有参数
while(res.next()){
System.out.println(res.getobject("id")); //获得结果有多个方法,按需取用
}
//关闭连接
res.close();
statement.close();
con.close();
注意其中需要捕获和处理一些异常主要有ClassNotFindException、SQLExecuteException等!!!
完整示例实现及结果展示
package comm.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class test_jdbc_select {
//可以把它包装为方法类
public static void main(String[] args) {
String DRIVER = "com.mysql.jdbc.Driver"; //加载驱动
String DB_URL = "jdbc:mysql://localhost:3306/xboot"; //要连接的数据库
ResultSet res = null; //结果集
PreparedStatement statement = null; //sql执行对象
Connection con = null; //数据库对象
try {
Class.forName(DRIVER); //加载驱动
con = DriverManager.getConnection(DB_URL,"root","root"); //连接到数据库
String sql = "select * from t_mytest";
statement = con.prepareStatement(sql); //声明statement 或者 preparedstatement对象,后者可以预编译实现动态执行sql语句,防止sql注入,具备安全性
res = statement.executeQuery(); //执行查询语句,更新,插入,删除用executeupdate()方法
while(res.next()){
System.out.print(res.getObject("id")+" "); //可以用明确告知类型的方法,性能更好
System.out.print(res.getObject("name")+" ");
System.out.print(res.getObject("sex")+" ");
System.out.print(res.getObject("school")+" ");
System.out.println();
}
}catch (Exception e){
e.printStackTrace();
}finally { //finally块关闭资源
try {
if(res!=null) {
res.close();
}
if(statement!=null) {
statement.close();
}
if(con!=null) {
con.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}
表数据
IDEA运行数据:
说在最后:插入、删除、更新数据区别在于不需要ResultSet类相应执行方法的返回值为整数(受影响的数据库表行数),sql不同,一定要记得关闭资源。
最后
以上就是缓慢猎豹为你收集整理的JDBC完整流程jdbc的流程实列代码注意其中需要捕获和处理一些异常主要有ClassNotFindException、SQLExecuteException等!!!说在最后:插入、删除、更新数据区别在于不需要ResultSet类相应执行方法的返回值为整数(受影响的数据库表行数),sql不同,一定要记得关闭资源。的全部内容,希望文章能够帮你解决JDBC完整流程jdbc的流程实列代码注意其中需要捕获和处理一些异常主要有ClassNotFindException、SQLExecuteException等!!!说在最后:插入、删除、更新数据区别在于不需要ResultSet类相应执行方法的返回值为整数(受影响的数据库表行数),sql不同,一定要记得关闭资源。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复