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); 

原文地址:https://www.cnblogs.com/lukelook/p/7851624.html