JavaClassOnline11,5_DeepIn

数据库的访问

1.**大纲**

  • 确定数据库
  • 连接数据库
  • 执行SQL
  • 处理结果
  • 关闭连接

2.**访问数据库的基本步骤**

  • 1**、确定数据库**
  • 2**、连接数据库**
  • 3**、执行SQL**
  • 4**、处理结果**
  • 5**、关闭连接**

第 1 步:确定数据库

JDBC URLpublic static final String JDBCURL_QUESTIONLIB = “jdbc:derby:” + FOLDER_DATA + “/QuestionLib”;

第 2 步:连接数据库

Connection conn = DriverManager.getConnection(jdbcurl); //**可提供url、用户名、密码3个参数Connection conn = DriverManager.getConnection(JDBCURL_QUESTIONLIB);Connection conn = DriverManager.getConnection(JDBCURL_QUESTIONLIB, “”, “”);**

第 3 步:执行SQL

(1)使用StatementStatement stmt = conn.createStatement(); //**可提供2个参数 ~**参数1:结果集游标的滚动类型及对数据库变化的反映 **ResultSet.TYPE\_FORWARD\_ONLY**ResultSet.TYPE_SCROLL_INSENSITIVE **ResultSet.TYPE\_SCROLL\_SENSITIVE** ~**参数2:是否能用结果集对数据库进行更新**ResultSet.CONCUR_READ_ONLY `ResultSet.CONCUR_UPDATABLE执行查询(select)ResultSet rset = stmt.executeQuery(sql**语句);执行更新(insert;delete;update)int rows = stmt.executeUpdate(sql**语句);执行其它boolean v = stmt.execute(sql**语句); Xv == true**:有结果集,可获得结果集进行处理 Xv == false**:无结果集 ————imely: (2)使用PreparedStatement //继承自Statement<不浪费时间进行的快速>PreparedStatement stmt = conn.prepareStatement(sql); //**可提供2个参数PreparedStatement stmt = conn.prepareStatement(“select * from choice where knowledge=? and difficulty=?”, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);stmt.setXxx(1, x); stmt.setXxx(2, x);执行查询(select)ResultSet rset = stmt.executeQuery();执行更新(insert;delete;update)int rows = stmt.executeUpdate();执行其它boolean v = stmt.execute(); (3)使用CallableStatement //继承自PreparedStatementCallableStatement stmt = conn.prepareCall(sql);

第 4 步:处理结果

使用 ResultSet 接口提供的方法对结果集数据进行处理说明主要操作:① 记录指针;② 获取数据 1.记录指针:开始指向表头行,可进行移动(只能向前;前后皆可) 2.获取数据:对于记录指针指向的行,可以使用列号或列名获取数据使用列号时列号从 1 开始计只能读取一次,不能重复读取,可存储在一个变量中重复使用

列名1

列名2

列名3

列名4

……

数据1

数据2

数据3

数据4

……

……

……

……

……

……

数据1

数据2

数据3

数据4

……

ResultSet 学会掌握并且分清楚 JDK中的方法,指针开始的地方!返回值等用途!!! ■记录指针boolean next();boolean previous();boolean first();boolean last();void beforeFirst();void afterLast();boolean absolute(int);boolean relative(int);boolean isBeforeFirst();boolean isAfterLast();boolean isFirst();boolean isLast(); ……记录指针boolean next();boolean previous();boolean first();boolean last();void beforeFirst();void afterLast();boolean absolute(int);boolean relative(int);boolean isBeforeFirst();boolean isAfterLast();boolean isFirst();boolean isLast();……

第 5 步:关闭连接

conn.close();

  • _对于一个Statement对象stmt,执行查询后得到一个ResultSet结果集rset1,若再次使用stmt执行查询后得到另一个结果集rset2,则rset1会自动关闭。_
  • _要想保持两个结果集都不关闭,就需要使用两个Statement对象分别执行各自的查询。_
(っ•̀ω•́)っ✎⁾⁾ 坚持技术学习、内容输出与分享,您的支持将鼓励我继续创作!(*/ω\*)
( • ̀ω•́ )✧如有疑问或需要技术讨论,请留言或发邮件到 aclearzhang@qq.com.(*・ω< ) 
  • 本文作者:: AClearZhang
  • 本文链接:: 234.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!