zoukankan      html  css  js  c++  java
  • 1.JDBC基础

        JDBC全称Java Database Connectivity,即Java数据库连接。(以下以MySQL为例,使用MySQL语句)

    Sun公司提供了标准JDBC API接口,没有实现具体类。各个数据库厂商实现了各自的具体类。我们与不同数据库连接,只需要调用不同的数据库驱动程序就可以,即调用了数据库JDBC API的具体类。(这部分属于Java多态)

        JDBC API可完成以下3个任务  

     1.建立与数据库的连接

     2.执行SQL语句

     3.获得SQL语句的执行结果

    安装MySQL数据库:

        首先我们要在自己电脑上安装MySQL数据库,方法如下:

            http://jingyan.baidu.com/article/f79b7cb35c0f439144023e38.html(百度经验,自己没有试过,具体安装细节搜索百度)。

    MySQL基本语句:

        1.创建新的数据库:

      create database [IF NOT EXISTS] 数据库名; (注意每条语句结尾都要带上一个分号,并且语句必须使用英文输入,数据库名根据自己想定义的名字替换,以下相同

     2.删除指定数据库:

      drop database 数据库名;

     3.对某数据库进行操作:

      use 数据库名;

     4.查询该数据库下包含多少个数据表:

      show tables;

     5.查看数据表的表结构:

      desc 表名;

    语句分类:

     1.DML(Data Manipulation Language,数据操作语言) 语句:主要有insert、update和delete三个关键字构成。

     2.DDL(Data Definition Language,数据定义语言)语句:主要有create、alter、drop和truncate四个关键字构成。

     3.DCL(Data Control Language,数据控制语言)语句:主要有grant和revoke两个关键字构成。

    其中,要掌握create、drop、insert、update、delete简单语句格式。最重要的要掌握select语句。增删改查。

    JDBC4.2常用接口和类简介:

     DriverManager:用于管理JDBC驱动的服务类。程序中使用该类的功能是获取Connection对象。

     Connection:数据库连接对象,每个connection代表一个物理连接会话。要想访问数据库,必须先获得数据库连接。

        Statement:用于执行SQL语句的工具接口。

     PreparedStatement:预编译的Statement对象。PreparedStatement是Statement的子接口。它允许数据库预编译SQL语句(这些SQL语句通常带有参数),相对于Statement而言,使用PreparedStatement执行SQL语句是,无需再传入SQL语句,只要为预编译的SQL语句传入参数值即可。

     ResultSet:结果集对象。该对象包含访问查询结果的方法。

    JDBC编程步骤:

     1.加载驱动:(使用Class类的静态方法来加载驱动),想使用哪个数据库,就查询要加载的驱动名称。

      //加载MySQL的驱动

      Class.forName("com.mysql.jdbc.Driver“); //这里因为加载驱动不同,即调用的具体类不同,可以连接不同的数据库。

      //加载Oracle的驱动

      Class.forName("oracle.jdbc.driver.OracleDriver");

     2.通过DriverManager获取数据库连接:

      DriverManager.getConnection(String url, String user, String pass);//数据库URL,登录数据库的用户名,登录数据库的密码

      URL写法规则:

      //MySQL写法:

           jdbc:subprotocol:other stuff  //subprotocol指定连接到特定数据库的驱动

      例如:jdbc:mysql://hostname:port/databasename

      //Oracle写法

      jdbc:oracle:thin:@hostname:port:databasename

     3.通过Connection对象创建Statement对象:

        3种方法:

          createStatement():创建基本的Statement对象

          prepareStatement(String sql):根据传入的SQL语句创建预编译的Statement对象

          prepareCall(String sql):根据传入的SQL语句创建CallableStatement对象,该对象可调用存储过程

     4.使用Statement执行SQL语句:

      1.execute():可以执行任何SQL语句但是比较麻烦

      2.executeUpdate():主要执行DML和DDL语句。执行DML语句返回受SQL语句影响的行数,执行DDL语句返回0。

      3.executeQuery():只能执行查询语句(select),执行后返回代表查询结果的ResultSet对象。

     5.操作查询结果集:

      1.next()、previous()、first()、last()、beforeFirst()、afterLast()、absolute()等移动记录指针的方法

      2.getXxx():获得记录指针指向行、特定列的值。

      6.回收数据库资源:

        关闭ResultSet、Statement和Connection的资源。

     1 public class ConnMySql{
     2     
     3     public static void main(String[] args) throws Exception{
     4         
     5         //1.加载驱动,使用反射知识,现在记住这么写
     6         Class.forName("com.mysql.jdbc.Driver");
     7         
     8         try{
     9             
    10             //2.使用DriverManager获取数据库连接
    11             //其中返回的Connection就代表了Java程序和数据库的连接
    12             //不同数据库的URL写法需要查驱动文档,用户名、密码由DBA分配
    13             Connection conn = DriverManager.gerConnection(
    14                 "jdbc:mysql://127.0.0.1:3306/select_test"
    15                 , "root", "54321");
    16                 
    17             //3.使用Connection来创建一个Statement对象
    18             Statement stmt = conn.createStatement();
    19             
    20             //4.执行SQL语句
    21             /*
    22             Statement 有三种执行SQL语句的方法:
    23                 1.execute()可执行任何SQL语句,返回一个boolean值,如果执行后第一个结果是ResultSet,则返回true,否则返回false
    24                 2.executeQuery()执行select语句,返回查询到的结果集
    25                 3.executeupdate()用于执行DML语句,返回一个整数,代表被SQL语句影响的记录条数
    26             */
    27             
    28             //5.返回结果集,并对其进行操作
    29             ResultSet rs = stmt.executeQuery("select s.*, teacher_name" + "from student_table s, teacher_table t" + "where t.teacher_id = s.java_teacher")){
    30                 //ResultSet有一系列的getXXX(列索引 | 列名)方法,用于获取记录指针
    31                 //指向行、特定列的值,不断地使用next()将记录指针下移一行
    32                 //如果移动后记录指针依然指向有效行,则next()方法返回true
    33                 while(rs.next()){
    34                     System.out.println(rs.getInt(1) + "	" + rs.getString(2) + "	" + rs.getString(3) + "	" + rs.getString(4));
    35                 }
    36                 
    37                 //6.回收数据库资源,关闭时候有要求,先建的引用最后关闭。和栈的执行顺序一样。
    38                 rs.close();
    39                 stmt.close();
    40                 conn.close();
    41                 
    42             }
    43         }
    44     }
    45     
    46 }
    View Code

    参考链接:

    MySQL数据库安装:http://jingyan.baidu.com/article/f79b7cb35c0f439144023e38.html(百度经验,自己没有试过,具体安装细节搜索百度)。

  • 相关阅读:
    在python3.x上安装suds 并访问webservice
    numpy nonzero与isnan
    彻底弄清python的切片
    pandas read_sql与read_sql_table、read_sql_query 的区别
    dataframe to sql
    同时替换掉多个字符串
    matplotlib中在for中画出多张图
    MySql 创建/删除数据库
    python3与anaconda2共存
    js调用打印机
  • 原文地址:https://www.cnblogs.com/lanshanxiao/p/7155800.html
Copyright © 2011-2022 走看看