zoukankan      html  css  js  c++  java
  • 19.JDBC和数据库访问.md

    1.基本功能:
    Java通过JDBC完成:

    2.基本类型,通常用最后一种

    3.JDBC简介

    Java连接SQL例子:
    参考:http://blog.chinaunix.net/uid-20726500-id-3876569.html
    1.加载驱动

    2.获取连接

    3.连接实例:
    定义:
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 //DbManage.java
    import java.sql.*;

    public class DbManage {
    public boolean InitDb(){
    //初始化驱动
    try {
    //Class-SQL Server
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    //Class-MySQL
    //Class.forName("com.mysql.jdbc.Driver");
    //Class-Oracle
    //Class.forName("oracle.jdbc.driver.OracleDriver");

        } catch (ClassNotFoundException ec) {
            System.out.println("Error 1: ");
            System.out.println(ec.getMessage());
        }
        catch(Exception e){
            System.out.println("Error 2: ");
            System.out.println(e.getMessage());
        }
         
        //获取数据连接
        /*url的填写遵循各自规范
        --通用
        jdbc:subprotocol:other stuff,其中subprotocol之连接到特定的数据库,sutff不固定
        --mysql
        jdbc:mysql://hostname:port/databasename
        --oracle
        jdbc:oracle:thin:@hostname:port:databasename
        */
        //url
        String url = "jdbc:sqlserver://localhost:49838;databaseName=HAMSDb;IntegratedSecurity=True";
        //这里的端口要查看具体电脑,最后一个选项是用Windows验证的方式去连接到数据库服务器,不需要用户名和密码。官方推荐方式
        //String user = "";  //用户名
        //String pass = "";  //密码
        try {
            /*获取连接*/
            //标准的连接方式:DriverManager.getConnection(url, user, pass);
            Connection cn = DriverManager.getConnection(url);
             
            /*使用Statement操作数据库*/
            Statement st = cn.createStatement();
            //使用结果集查询表结果
            ResultSet resultQuery = st.executeQuery("select * from Devices");
    

    // while(resultQuery.next()){
    // System.out.println("Key: " + resultQuery.getInt(1) + "Id: " + resultQuery.getString(2));
    // }//while

            //excute执行,但是这里的返回值boolean中的true和false不代表执行成功或者失败,表示是否有ResultSet对象返回,这点要注意!
            /*
            boolean b = st.execute("insert into aTest(ID, Name) values(3, 'ccc')");
            if (b) {
                System.out.println("有ResultSet对象返回,下面可以用ResultSet获取返回的结果集。");
            }
            */
             
        } catch (SQLException e) {
            System.out.println("Error 3: ");
            System.out.println(e.getMessage());
        }
         
        return true;
    }
    

    }

    123456789101112 package com.company.project.jdbctest;
    //Print.java
    public class Print {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //原始方法
        DbManage d = new DbManage();
        d.InitDb();
    }
    

    }

    4.excuteUpdate语句
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 package com.company.project.jdbctest;
    //InitDataBase.java
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.*;

    public class InitDataBase {
    //url
    private String url;
    public String getUrl() {
    return url;
    }
    public void setUrl(String url) {
    this.url = url;
    }

    //forClassName
    private String forClassName;
    public String getForClassName() {
        return forClassName;
    }
    
    public void setForClassName(String forClassName) {
        this.forClassName = forClassName;
    }
     
    //Connection
    private Connection conn;    
    public Connection getConn() {
        return conn;
    }
    public void setConn(Connection conn) {
        this.conn = conn;
    }
    //构造
    public InitDataBase(){};
     
    //读取配置文件
    public void ReadPropertyFile(){
        /*读取ini文件获取配置*/
        try{
            //读取配置文件
            Properties p = new Properties();
            p.load(new FileInputStream("Properties//mysqlconfig.ini"));
             
            //读取sqlClassForName
            setForClassName(p.getProperty("classForName"));
             
            //读取url
            setUrl(p.getProperty("url"));              
        }
        catch(Exception e){
            e.getMessage();
            System.out.println("Load Properties Failed!");
        }
    }
     
    public void ConnectionSQL(){
        try {
            /*开始连接数据库*/
            ReadPropertyFile();
             
            //加载类
            Class.forName(getForClassName());
            //获取连接
            conn = DriverManager.getConnection(getUrl());
        } catch (ClassNotFoundException eof) {
            // TODO Auto-generated catch block
            eof.printStackTrace();
        }
        catch (Exception e){
            e.printStackTrace();
        }
         
         
    }
    

    }

    12345678910111213141516171819202122232425 package com.company.project.jdbctest;
    //ExcuteDDL.java
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;

    //执行DDL语句
    public class ExcuteDDL {
    public void createTable(String strSql){
    //获取连接
    InitDataBase idb = new InitDataBase();
    idb.ConnectionSQL();
    Connection cn = idb.getConn();
    try {
    Statement st = cn.createStatement();
    st.executeUpdate(strSql);

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.getMessage();
            System.out.println("ExcuteDDL Error !");
        }
         
    }
    

    }

    12345678910111213 package com.company.project.jdbctest;
    //Print.java
    public class Print {

    public static void main(String[] args) {      
        //ExcuteDDL
        ExcuteDDL ed = new ExcuteDDL();
        //只执行一次
        //ed.createTable("create table excuteddl_test(ID int, NAME varchar(32))");
        System.out.println("create table successful!");      
    }
    

    }

    5.PreparedStatement语句

    12345678910111213141516171819202122232425262728293031 package com.company.project.jdbctest;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    //PrepareStatementTest.java
    public class PrepareStatementTest {
    public void insertOneH(){
    //获取连接
    InitDataBase idb = new InitDataBase();
    idb.ConnectionSQL();
    Connection cn = idb.getConn();
    //
    String strSql = "insert into excuteddl_test(ID, NAME) values(?, ?)";
    try {
    PreparedStatement ps = cn.prepareStatement(strSql);

            //执行
            for (int i = 0; i < 100; i++) {
                ps.setString(1, i+"");
                ps.setString(2, "name"+i+"");
                ps.executeUpdate();
            }
             
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }      
    }
    

    }

    1234567891011 package com.company.project.jdbctest;
    //Print.java
    public class Print {

    public static void main(String[] args) {
        PrepareStatementTest pst = new PrepareStatementTest();
        pst.insertOneH();
        System.out.println("create table successful!");      
    }
    

    }

    6.使用CallableStatement调用存储过程

  • 相关阅读:
    你不该知道的.NET 第零回: 不继承Object的后果 不及格的程序员
    开张 不及格的程序员
    用WinDBG调试器 修改 星际争霸 等游戏. 不及格的程序员
    自定义服务器控件 继承不到父类/基类的 SupportsEventValidation 特性. 不及格的程序员
    讨论 计算机 操作系统休眠恢复的过程. 不及格的程序员
    十一期间 极品飞车13:变速 通关了 不及格的程序员
    谁发明的 Ctrl + Alt + Del 组合键,以及它在Windows中的重要性. 不及格的程序员
    asp.net development server 挂起问题解决
    SqlServer数据库记录数大引起的一系列问题解决
    完全分布模式hadoop集群安装配置之一安装第一个节点
  • 原文地址:https://www.cnblogs.com/bugstar/p/8492799.html
Copyright © 2011-2022 走看看