zoukankan      html  css  js  c++  java
  • 12-2 数据库操作方法总结

    1.加载驱动(加载驱动之前需要先把加载对应的jar)

    Class.forName();

    oracle: oracle.jdbc.driver.OracleDriver

    mysql:com.mysql.jdbc.Driver

    2.create statement

            执行静态SQL语句,通常通过Statement实例实现;

            执行动态SQL语句,通常通过PreparedStatement实例实现;

            执行数据库存储过程,通常通过CallableStatement实例实现。

    备注:所谓的语句静态和动态是指sql语句在合适被编译和执行,对于主体结构已明确的sql,在java编译时,直接交给数据库去分析,数据库对进行语法详解,生成数据库方面的可执行代码,这样的sql称为静态sql,有占位符?的也是静态sql.动态sql一般是用户输入或外部条件动态组合的语句块。

    Statement stmt = conn.createStatement();

    PreparedStatement pstmt = conn.preparedStatement(sql);

    CallableStatement cstmt = conn.prepareCall("{CALL demoSp(?,?)}");

    3.执行语句

     execute(sql):可以执行各种sql,返回值为Boolean,表示是否返回ResultSet;

    executeQuery(sql):执行查询语句,返回值为ResltSet对象;

    executeUpdate(sql):执行增删改语句,返回收到影响的行数。

    4.处理结果

      (1)使用结果集(ResultSet)对象的访问方法获取数据。

            · next():用于移动到ResultSet中的下一行,使下一行成为当前行;

            · first():将光标移动到此ResultSet对象的第一行;

            · last():将光标移到到此ResultSet对象的最后一行;

            · previous():将光标移动到此ResultSet对象的上一行。

        (2)通过字段名或列索引取得数据:

    String name = rs.getString("name");

    String pass = rs.getString(1);

     5.其他

    拼接Sql时String类型的两边要加''单引号。

    可以用占位符?定义sql,在PreparedStatement执行前必须设置每个?的值。调用pe.set(int,param)来设置值。

    6.call带输入输出参数的存储过程(前两个为输入参数,后两个为输出参数):

    CallableStatement call=con.prepareCall("CALL BANK_DATA_CHECH(?,?,?,?");

    输入参数直接注入调用pe.set(int,param)来设置值。

    call.setString(1,"AA");

    call.setStrinf(2,"BB");

    输出参数注入方法:

    call.registerOutParameter(3,Types.INTEGER);

    call.resgisterOutParameter(4,Typea.String);

    执行:

    call.execute();

    获取输出结果:

    call.getInt(3);

    call.getString(4);

    7.获取列的信息

    ResultSetMetaData data =resultSet.getMetaData();

    ResultSetMetaData data=rs.getMetaData(); 

    while(rs.next()){ 

    for(int i = 1 ; i<= data.getColumnCount() ; i++){ 

    //获得所有列的数目及实际列数 

    int columnCount=data.getColumnCount(); 

    //获得指定列的列名 

    String columnName = data.getColumnName(i); 

    //获得指定列的列值 

    String columnValue = rs.getString(i); 

    //获得指定列的数据类型 

    int columnType=data.getColumnType(i); 

    //获得指定列的数据类型名 

    String columnTypeName=data.getColumnTypeName(i); 

    //所在的Catalog名字 

    String catalogName=data.getCatalogName(i); 

    //对应数据类型的类 

    String columnClassName=data.getColumnClassName(i); 

    //在数据库中类型的最大字符个数 

    int columnDisplaySize=data.getColumnDisplaySize(i); 

    //默认的列的标题 

    String columnLabel=data.getColumnLabel(i); 

    //获得列的模式 

    String schemaName=data.getSchemaName(i); 

    //某列类型的精确度(类型的长度) 

    int precision= data.getPrecision(i); 

    //小数点后的位数 

    int scale=data.getScale(i); 

    //获取某列对应的表名 

    String tableName=data.getTableName(i); 

    // 是否自动递增 

    boolean isAutoInctement=data.isAutoIncrement(i); 

    //在数据库中是否为货币型 

    boolean isCurrency=data.isCurrency(i); 

    //是否为空 

    int isNullable=data.isNullable(i); 

    //是否为只读 

    boolean isReadOnly=data.isReadOnly(i); 

    //能否出现在where中 

    boolean isSearchable=data.isSearchable(i); 

  • 相关阅读:
    【语言处理与Python】6.3评估
    win10同时安装 office2016和visio2016
    如何学好C语言(转)
    数据库索引
    Redis系列(二)如何接受客户端请求并调用处理函数
    Redis系列(三)事件处理细节分析及epoll介绍
    linux下查看某一个程序所使用的内存方法总结
    c++ 二级指针详解&&hiredis api
    C风格字符串
    twemproxy简介
  • 原文地址:https://www.cnblogs.com/lukelook/p/7851624.html
Copyright © 2011-2022 走看看