博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC原生态代码
阅读量:4349 次
发布时间:2019-06-07

本文共 2101 字,大约阅读时间需要 7 分钟。

JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!

DriverManger(驱动管理器)的作用有两个:

l  注册驱动:这可以让JDBC知道要使用的是哪个驱动;Class.forName(“com.mysql.jdbc.Driver”)

l  获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1”,”root”,”123”);

 

 

Connection对象表示连接,与数据库的通讯都是通过这个对象展开的:

l  Connection最为重要的一个方法就是用来获取Statement对象;

 

Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句:

l  void executeUpdate(String sql):执行更新操作(insert、update、delete等);

l  ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;

 (后面我们使用的都是PrepareStatement:预编译的语句,它的好处有三点,防止sql的攻击,提高代码可读性,提高效率)

PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。

 

ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据:

 

public static void main(String[] args) {

             Connection connection = null;

             PreparedStatement preparedStatement = null;

             ResultSet resultSet = null;

            

             try {

                 //1、加载数据库驱动

                 Class.forName("com.mysql.jdbc.Driver");

                 //2、通过驱动管理类获取数据库链接

                 connection =  DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "password");

                 //3、定义sql语句 ?表示占位符

             String sql = "select * from user where username = ?";

                 //4、获取预处理statement

                 preparedStatement = connection.prepareStatement(sql);

                 //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值

                 preparedStatement.setString(1, "王五");

                 //6、向数据库发出sql执行查询,查询出结果集

                 resultSet =  preparedStatement.executeQuery();

                 //7、遍历查询结果集

                 while(resultSet.next()){

                     System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));

                 }

             } catch (Exception e) {

                 e.printStackTrace();

             }finally{

                 //8、释放资源

                 if(resultSet!=null){

                     try {

                         resultSet.close();

                     } catch (SQLException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                     }

                 }

                 if(preparedStatement!=null){

                     try {

                         preparedStatement.close();

                     } catch (SQLException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                     }

                 }

                 if(connection!=null){

                     try {

                         connection.close();

                     } catch (SQLException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

                     }

                 }

 

             }

 

        }

转载于:https://www.cnblogs.com/Hennessy-Road/p/6587219.html

你可能感兴趣的文章
[LintCode] 159 Find Minimum in Rotated Sorted Array
查看>>
在reshard过程中,将会询问reshard多少slots:
查看>>
地精排序-最简单的排序算法
查看>>
跑路啦 跑路啦 这个博客废掉啦
查看>>
JQuery 实现返回顶部效果
查看>>
辛苦挣钱买房,结果房产证一直办不下来
查看>>
Which kind of aspects of OIL PRESS MACHINERY would you like best
查看>>
[转载] 晓说——第17期:揭秘战争秘闻 朝鲜战争62年祭(下)
查看>>
java集合系列之ArrayList源码分析
查看>>
nyoj 518取球游戏(博弈)
查看>>
实验5
查看>>
luogu P1252 马拉松接力赛 P1803 凌乱的yyy / 线段覆盖
查看>>
11. 鼠标移到物体上高亮显示轮廓
查看>>
VS C++ DLL速度问题
查看>>
JavaScript弹出式日历控件 无jquery
查看>>
HTML5方向键控制会奔跑的马里奥大叔
查看>>
上周热点回顾(4.28-5.4)
查看>>
上周热点回顾(1.29-2.4)
查看>>
找到问题的真正原因:20121021服务器故障处理经历
查看>>
work of weekend 12/12/2015~12/14/2015
查看>>