第十二课时:JDBC 编程 (2)

news/2024/5/19 0:21:18 标签: 编程, JDBC, SQL, MySQL

示例:

import java.sql.*;

import java.util.*;

import java.io.*;

 

import static java.sql.ResultSet.*;

 

public class ResultSetTest

{

private String driver;

private String url;

private String user;

private String pass;

Connection conn;

PreparedStatement pstmt;

ResultSet rs;

public void initParam(String paramFile)throws Exception

{

//使用Properties类来加载属性文件

Properties props = new Properties();

props.load(new FileInputStream(paramFile));

driver = props.getProperty("driver");

url = props.getProperty("url");

user = props.getProperty("user");

pass = props.getProperty("pass");

}

 

 

public void query(String sql)throws Exception

{

try

{

//加载驱动

Class.forName(driver);

//获取数据库连接

conn = DriverManager.getConnection(url , user , pass);

//使用Connection来创建一个PreparedStatement对象

//传入控制结果集可滚动,可更新的参数。

pstmt = conn.prepareStatement(sql , ResultSet.TYPE_SCROLL_INSENSITIVE

, ResultSet.CONCUR_UPDATABLE);

rs = pstmt.executeQuery();

rs.last();

int rowCount = rs.getRow();

for (int i = rowCount; i > 0 ; i-- )

{

rs.absolute(i);

System.out.println(rs.getString(1) + "\t"

+ rs.getString(2) + "\t" + rs.getString(3));

//修改单元格多对应的值

rs.updateString(2 , "学生名" + i);

//提交修改

rs.updateRow();

}

}

//使用finally块来关闭数据库资源

finally

{

if (rs != null)

{

rs.close();

}

if (pstmt != null)

{

pstmt.close();

}

if (conn != null)

{

conn.close();

}

}

}

public static void main(String[] args) throws Exception

{

ResultSetTest rt = new ResultSetTest();

rt.initParam("mysql.ini");

rt.query("select * from student_table");

}

}

 

如果要创建可更新的结果集,查询语句查询的数据通常只能来源于一个数据表,而且查询结果结果的数据列中必须包含主键列,否则更新失败。


5、使用 ResultSetMetaData 分析结果集
MetaData 的意思是元数据,即描述其它数据的数据,因此 ResultSetMetaData 封装了描述 ResultSet 对象的数据,而 DatabaseMetaData 则封装了描述 Database 的数据。

ResultSet 里包含一个 getMetaData() 方法,该方法返回该 ResultSet 对应的 ResultSetMetaData 对象,一旦获得了 ResultSetMetaData 对象,就可以通过 ResultSetMetaData 提供的大量的方法来返回 ResultSet 的描述信息,常用的方法有以下三个:
  • int getColumnCount()
  • String getColumnName(int column)
  • int getColumnType(int column)

http://www.niftyadmin.cn/n/1039896.html

相关文章

第十三课时:Annotation 注释

从 JDK 5.0 开始,Java 增加了对元数据 (MetaData)的支持,也就是 Annotation (注释)。用 Annotation 程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具…

第十四课时:输入/输出2

3、使用 ChannelChannel 类似于传统的流对象, 但与传统的流不同的是, Channel 有两个主要的区别:Channel 可以直接将指定文件的部分或全部映射成 Buffer程序不能直接访问 Channel 中的数据, 包括读取, 写入都不行, Channel 只能与 Buffer 进行交互, 也就是说, 要从 Channel 中取…

安卓手机与蓝牙模块联合调试(六)-- 编写自己的蓝牙控制界

安卓手机与蓝牙模块联合调试(六)-- 编写自己的蓝牙控制界面控制单片机(下篇,STC单片机代码实现) 2018年09月18日 17:07:04 涛声依旧Cjt 阅读数:127 标签: 单片机蓝牙模块安卓蓝牙通讯安卓与单片…

新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源)

新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源) 2017年08月21日 12:55:25 XPLab 阅读数:4008 你家里的玩具遥控车坏了?遥控器丢了?先不要急着丢掉,看完这篇教程,你可以…

第十六课时: 多线程

一. 继承 Thread 类创建线程 通过继承 Thread 类来创建并启动多线程的步骤如下: 定义 Thread 类的子类, 并重写该类的 run 方法, 该 run 方法的方法体就是代表了线程需要完成的任务创建 Thread 类的实例, 即创建了线程对象用线程对象的 start 方法来启动线程.示例:public clas…

安卓手机蓝牙控制智能小车 android程序设计

安卓手机蓝牙控制智能小车 android程序设计 2016年06月10日 19:21:11 cyang812 阅读数:14773 版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问个人主页 https://cyang.tech https://blog.csdn.net/u011303443/article/details…

第十七课时: 网络编程

一. 网络编程的基础知识 1、网络基础知识 计算机网络通常是按照规模大小和延伸范围来分类的, 常见的划分为: 局域网(LAN), 城域网(MAN), 广域网(WAN). INTERNET 可以视为世界上最大的广域网. 如果按照网络的拓扑结构来划分, 可以分为星型网络, 总线网络, 环形网络, 树形网络, 星…

【Android - 自定义View】之自定义View浅析

【Android - 自定义View】之自定义View浅析 1、概述 Android自定义View / ViewGroup的步骤大致如下: 1) 自定义属性; 2) 选择和设置构造方法; 3) 重写onMeasure()方法; 4) 重写onDraw()方法; 5) 重写onLayout()方…