资讯专栏INFORMATION COLUMN

JDBC干货篇一

hiyang / 2668人阅读

摘要:干货篇一基础的全称是,即数据库连接,它是一种可以执行语句的。将光标移动到上一行,如果超过结果集的范围则返回。列索引从开始,意味着行中的第一列是,第二列是,以此类推。

JDBC干货篇一 JDBC基础

JDBC的全称是Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API。程序可通过JDBC API连接到关系数据库,并使用结构化查询语言(SQL,数据库标准的查询语言)来完成对数据库的查询、更新

与其他数据库编程环境相比,JDBC为数据库开发提供了标准的API,使用JDBC开发的数据库应用可以跨平台运行,而且还可以跨数据库(如果全部使用标准的SQL语句)。也就是说如果使用JDBC开发一个数据库应用,则该应用既可以在Windows操作系统上运行,又可以在Unix等其他操作系统上运行,既可以使用MySQL数据库,又可以使用Oracle等其他的数据库,应用程序不需要做任何的修改

加载数据库驱动

Class.forName(classDriver)其中classDriver就是数据库驱动类对应的字符串,下面给出加载mysql,oracle数据库的例子:

Class.forName("com.mysql.jdbc.Driver");   //mysql
Class.forName("oracle.jabc.driver.OracleDriver");    //oracle
获取数据库连接

获得数据库连接的方法为DriverManager.getConnection(),其中有不同的参数,也对应不同的方法,下面将会详细介绍

DriverManager.getConnection(String url)

DriverManager.getConnection(String url, Properties prop) 这里的Properties是一个属性集,详情请看文档

DriverManager.getConnection(String url,String user,String password) 这里的urljdbc:mysql://localhost:3306/java_demo,其中java_demo表示你自己创建的数据库名字,urser表示当前数据库的登录的用户名,password表示密码

        //第二种方法
        String url="jdbc:mysql://localhost:3306/java_demo";  //这是连接的url
        String user="root";
        String password="root";   
        Properties properties=new Properties();   //创建属性集
        properties.setProperty("password", password);   //向起中添加属性,很想python中的字典
        properties.setProperty("user",user);   
        Class.forName("com.mysql.jdbc.Driver");   //加载数据库驱动
        Connection conn=DriverManager.getConnection(url,properties);   //连接数据库
        
        //第三种方法
        
        Connection conn=DriverManager.getConnection(url,user,password);   //连接数据库 
        

注意:以上只是一些例子,并不是完整的代码,其中并没有处理异常,还应该注意的是要关闭connection

查询数据

查询数据有两种方法,分别为静态查询和动态查询,静态查询使用的Statement,动态查询使用的PrepareStatement,下面详细介绍这两种查询方法

静态查询

使用的是Statement,其中常用的函数如下:

boolean execute(String SQL) 如果ResultSet对象可以被检索,则返回的布尔值为 true ,否则返回 false 。当你需要使用真正的动态 SQL 时,可以使用这个方法来执行 SQL DDL 语句

int executeUpdate(String SQL) 返回执行 SQL 语句影响的行的数目。使用该方法来执行 SQL 语句,是希望得到一些受影响的行的数目,例如,INSERTUPDATEDELETE 语句

ResultSet executeQuery(String SQL) : 返回一个 ResultSet 对象。当你希望得到一个结果集时使用该方法,就像你使用一个 SELECT 语句。

close()关闭statement对象,这个是必须有的,为了程序的安全,必须在结束之前关闭

实例:

    Statement stmt = null;   //申请对象
try {
   stmt = connection.createStatement( );   //通过Connection对象创建statement对象
   
   String sql_1="select * from course;";
   String sql_2="select * from course where id=2;";
   
   ResultSet res_1=stm.executeQuery(sql_1);   //执行查询语句,返回的是一个结果集合,上面已经说明了
   ResultSet res_2=stm.executeQuery(sql_1);
   
   while(res_1.next())
   {
   System.out.println(res_1.getInt(1)+"---"+res_1.getString(2));   //分别查询第一列和第二列的值,通过列数查询
   System.out.println(res_1.getInt("id")+"---"+res_1.getString("name"));   //通过列名查询
   
   }
  
   }
catch (SQLException e) {    //捕捉异常
   . . .
}
finally {
    if(connection!=null)
    {
        connection.close();    //关闭连接
    }
   if(stmt!=null)
   {
       stmt.close();  //关闭
   }
}

说明:ResultSet常用的方法如下:注意下面的方法会发生SQLException异常

public void beforeFirst() 将光标移动到第一行之前。

public void afterLast() 将光标移动到最后一行之后。

public boolean first() 将光标移动到第一行。从第一行的数据开始读取

public void last() 将光标移动到最后一行。

public boolean absolute(int row) 将光标移动到指定的第 row 行。

public boolean previous() 将光标移动到上一行,如果超过结果集的范围则返回 false

public boolean next() 将光标移动到下一行,如果是结果集的最后一行则返回 false。

public int getRow() 返回当前光标指向的行数的值。

public void moveToInsertRow() 将光标移动到结果集中指定的行,可以在数据库中插入新的一行。当前光标位置将被记住

public void moveToCurrentRow() 如果光标处于插入行,则将光标返回到当前行,其他情况下,这个方法不执行任何操作

public int getInt(String columnName) 返回当前行中名为 columnName 的列的 int 值。

public int getInt(int columnIndex) 返回当前行中指定列的索引的 int 值。列索引从 1 开始,意味着行中的第一列是 1 ,第二列是 2 ,以此类推。

getString(int columIndex) 返回指定列的String类型的数据

getString(String columName) 返回当前行中名为columNameString类型的值

动态查询

动态查询使用的PrepareStatement这个类实现的,PreparedStatement 接口扩展了 Statement 接口,它让你用一个常用的 Statement 对象增加几个高级功能。这个 statement 对象可以提供灵活多变的动态参数

实例:

PreparedStatement pstmt = null;
try {
   String SQL = "select * from course where age=? and name=?";
   pstmt = conn.prepareStatement(SQL);   //创建对象
   pstmt.setInt(1,22);   //设置参数age的值 ,1表示第一个参数
   pstmt.setString(2,"chenjiabing");   //设置name的值,其中2表示第二个参数
   ResultSet res=pstmt.execteQuery();
   while(res.next)
   {
       ....
   }
   
   . . .
}
catch (SQLException e) {
   . . .
}
finally {
    if(connection!=null)
    {
        connection.close();
    }
    if(pstmt!=null)
    {
    pstmt.close();   //关闭
    }

   . . .
}

说明:JDBC 中所有的参数都被用 ? 符号表示,这是已知的参数标记。在执行 SQL 语句之前,你必须赋予每一个参数确切的数值。其中PrepareStatement的常用函数如下,当然Statement中的execute ,executeQuery ,executeUpdate也可以使用

void setInt(int parameterIndex, int x) parameterIndex表示第几个?,这里的int x表示是mysql中定义的int类型的值

void setString(int parameterIndex,String x) 为第parameterIndexString类型的?赋予x的值

其他的操作

这里还有delete,update,alter等一系列的操作都是和上面的一样,就是把sql语句改变以下,如果使用的是静态的就要为delete,update,使用Statement.execteUpdate(sql)这个函数,当然要使用动态的也是executeUpdate函数

更多内容请移步本人博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69947.html

相关文章

  • 干货 | PHP就该这么学!

    摘要:梳理之后,目标就会被分解成一个个需要完成的具体任务。勤学学习效率与效果取决于执行力。这种选手即便帮他解决了问题,他也学不到东西。拆分任务将目标分解成具体可执行的学习任务。搜集知识资源查阅官方文档购买书籍搜集网络干货文章。 前段时间和大家一起分享了一篇关于学习方法内容《大牛与搬运工的差距——学习方法的力量》。我们将学习过程分成八步,并借鉴了敏捷开发的迭代思想,以达到自我迭代学习的效果。行...

    wushuiyong 评论0 收藏0
  • 做IT这几年,我整理了这些干货想要送给你!

    摘要:资源获取方式根据下面的索引,大家可以选择自己需要的资源,然后在松哥公众号牧码小子后台回复对应的口令,就可以获取到资源的百度云盘下载地址。公众号二维码如下另外本文会定期更新,松哥有新资源的时候会及时分享给大家,欢迎各位小伙伴保持关注。 没有一条路是容易的,特别是转行计算机这条路。 松哥接触过很多转行做开发的小伙伴,我了解到很多转行人的不容易,记得松哥大二时刚刚决定转行计算机,完全不知道这...

    王晗 评论0 收藏0
  • Qt/Ununtu篇一:基于ubuntu操作系统下的Qt的安装

    摘要:首先下载安装包进入官网下载地址,如图所示顺带说说目录结构各种开发工具安装包,新旧都有可以下载开发环境和源代码。迷你版,目前是针对的版本。正式发布版,是与开发版相对的稳定版库和开发工具可以下载开发环境和源代码。 ...

    Galence 评论0 收藏0
  • 关于弹幕的制作第一篇一 样式

    摘要:之前做了一个弹幕,样式是这个样子的详情见,记得评论 之前做了一个弹幕,样式是这个样子的 showImg(https://segmentfault.com/img/bVkYTy); 详情见 ,记得评论 http://blog.monokeroslun.xyz/xiang-mu-fen-xi-guan-yu-dan-mu-de-zhi-zuo/

    binaryTree 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<