zoukankan      html  css  js  c++  java
  • JDBC

    1.java数据库操作
    如何通过JDBC访问数据库?
    说明:用于在java程序中实现数据库操作功能,提供了执行SQL语句、访问各种数据库的方法,并为数据库提供了统一的接口。

    具体步骤:1)加载JDBC驱动器(位于客户端和服务器端之间,是一种中间桥梁,将数据库驱动加载到classpath中,
    在基于javaEE的web应用的开发过程,常常要把目标数据库产品的JDBC驱动复制到web-INF/lib下。
    2)加载JDBC驱动,并将其注册到DriveManager中。一般用反射
    class.forName(String driveName).
    3)建立数据库连接,取得Connection对象。一般通过DriveManager.getConnection(url,username,passwd)方法实现,
    其中,url表示连接数据库的字符串,username连接数据库的用户名,passwd表示连接的数据库的密码。
    4)建立Statement对象或PreparedStatement对象。
    5)执行SQL语句。
    6)访问结果集ResultSet对象。
    7)依旧将ResultSet/Statement/PreparedStatement/
    Connection对象关闭,释放掉所有的资源,例如rs.close()/
    con.close()等。为什么要这么做呢?原因在于JDBC驱动底层通常
    都是通过网络IO实现SQL命令与数据传输的。

    用MySQL连接数据库:
    Class.forName(“org.gjt.mm.mysql.Driver”);//用反射加载驱动
    String url=“jdbc:mysql://localhost/sample?user=sa password=sa”;//连接数据库的字符串、用户名、密码
    Connection con=DriverManager.getConnection(url);//建立数据库连接,取得Connection对象

    import java.sql.*;
    public class TestMysqlConnection{
        public static void main(String[] args) {
            Connection conn=null;
            Statement stmt=null;
            Resultset rs=null;
    
            //导入数据库的过程,操作文件菜单
            try{
                class.forName("com.mysql.jdbc.Driver");    
                //这里是干什么的?        
                conn=DriverManager.getConnection("jdbc:mysql://localhost/mydata?user="root&password=root&password=root");
                    //连接已经存在的数据库
                stmt=conn.creatStatement();
                //获得数据
                rs=stmt.executeQuery();
                while(rs.next()){
                    System.out.println(rs.getString("deptno"));
                    //访问数据库中的表
                }
            }catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            catch(Exception ex) {
                System.out.println("sqlException:"+ex.getMessage());
                System.out.println("sqlState:"+ex.getSqlState());
                System.out.println("VendorError:"+ex.getErrorCode());
            }finally{
                try{
                     if (rs !=null) {
                         rs.close();
                         rs.null;
                     }
                }catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    再看一个例子:

    1.导入JDBC驱动,

    即首先导入.jar文件(

    a. 选中建立好的工程Test,点击右键,选择Properties,

    b. 选择Java Build Path 在右边选择Libraries,点击Add External JARs...

    c. 导入正确的驱动连接的包

    d、选择Order and Export,勾选上我们刚刚导入进来的包,最后点击OK就可以了。

    然后建立数据库、库下建表、插入值

    2.java程序访问数据库

    package com.shiyanlou;
    
    import java.sql.*;
    
    public class JdbcTest {
       // JDBC 驱动器名称 和数据库地址
       static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
       //数据库的名称为 EXAMPLE
       static final String DB_URL = "jdbc:mysql://localhost/EXAMPLE";
    
       //  数据库用户和密码
       static final String USER = "root";
    
       static final String PASS = "";
    
       public static void main(String[] args) {
           Connection conn = null;
           Statement stmt = null;
           try{
               //注册JDBC 驱动程序
               Class.forName("com.mysql.jdbc.Driver");
    
               //打开连接
               System.out.println("Connecting to database...");
               conn = DriverManager.getConnection(DB_URL,USER,PASS);
    
               //执行查询
               System.out.println("Creating statement...");
               stmt = conn.createStatement();
               String sql;
               sql = "SELECT id, name, age FROM Students";
               ResultSet rs = stmt.executeQuery(sql);
    
               //得到和处理结果集
               while(rs.next()){
                   //检索
                   int id  = rs.getInt("id");
                   int age = rs.getInt("age");
                   String name = rs.getString("name");
    
                   //显示
                   System.out.print("ID: " + id);
                   System.out.print(", Age: " + age);
                   System.out.print(", Name: " + name);
                   System.out.println();
               }
               //清理环境
               rs.close();
               stmt.close();
               conn.close();
           }catch(SQLException se){
               // JDBC 操作错误
               se.printStackTrace();
           }catch(Exception e){
               // Class.forName 错误
               e.printStackTrace();
           }finally{
               //这里一般用来关闭资源的
               try{
                   if(stmt!=null)
                       stmt.close();
               }catch(SQLException se2){
               }
               try{
                   if(conn!=null)
                       conn.close();
               }catch(SQLException se){
                   se.printStackTrace();
               }
           }
           System.out.println("Goodbye!");
       }
    }
    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    IE7 下父元素及子元素的隐藏顺序带来的 display:none bug
    PHP 类的魔术方法及类的自动加载
    元素及文本的居中
    软件工程个人作业 词频统计
    读书笔记——《最后期限》
    读书笔记——《构建之法》
    [Reading] Asking while Reading
    【Paper Reading】Learning while Reading
    Android学习一:文件操作
    Android学习九:屏幕自适应
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8810548.html
Copyright © 2011-2022 走看看