




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JDBC数据库编程(2),数据库高级编程,回顾,数据库编程的含义? 编程中为什么要加驱动? JDBC-ODBC桥连与纯Java驱动两种方式的优缺点分别是什么? JDBC 程序访问数据库的步骤是什么?,本章目标,数据库高级访问 掌握PreparedStatement对象 参数化执行对象 掌握CallableStatement对象 调用存储过程的执行对象 三层结构设计 正则表达式的应用 验证输入信息的合法性,PreparedStatement,PreparedStatement继承自Statement 创建 PreparedStatement pstmt = con.prepareStatement(String sql); pstmt表示预编译的 SQL 语句的对象。 SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句,PreparedStatement,常用方法,PreparedStatement案例,插入数据 /*使用PreparedStatement调用存储过程插入数据*/ Connection con = null; PreparedStatement pstmt = null; int row = 0; /获取GUI信息 String stuID = stuIDTextField.getText(); String stuName = stuNameTextField.getText(); String stuDepartment = (String) departComboBox.getSelectedItem(); String stuClass = (String) classComboBox.getSelectedItem(); /检测 if (stuID.equals(“) | stuName.equals(“) JOptionPane.showMessageDialog(this, “请填写完整“); return; try /获得连接 con = DBUtil.getConn(); /创建执行对象 pstmt = con.prepareStatement(“insert studentinfo values(?,?,?,?) “); pstmt.setString(1, stuID);/设置存储过程的参数,从1开始 pstmt.setString(2, stuName); pstmt.setString(3, stuDepartment); pstmt.setString(4, stuClass);,/执行语句 row = pstmt.executeUpdate();/ 增删改都使用executeUpdate()方法 if (row != 0) JOptionPane.showMessageDialog(this, “插入成功“); stuIDTextField.setText(“); stuNameTextField.setText(“); catch (SQLException ex) JOptionPane.showMessageDialog(this, “插入失败“, “错误“, JOptionPane.ERROR_MESSAGE); catch (Exception ex) ex.printStackTrace(); finally /关闭连接 DBUtil.closeConn(); ,PreparedStatement案例,根据姓名查找 Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; /结果集 try /创建连接(DBUtil是连接工具类) con = DBUtil.getConn(); /创建执行对象 pstmt = con.prepareStatement(“select * from studentinfo where stuName=?“); /设置参数值 pstmt.setString(1, stuNameTextField.getText(); /执行查询 rs = pstmt.executeQuery(); /*将结果集存放到集合中然后在表中显示-略*/,CallableStatement,CallableStatement继承自PreparedStatement 创建 CallableStatement cstmt = con.prepareCall(String sql); CallableStatement是用于执行 SQL 存储过程的接口,在应用程序中调用存储过程可大大提高数据库的执行效率 在使用CallableStatement时通常调用带输入参数的存储过程,CallableStatement案例,插入数据 /*使用CallableStatement调用存储过程插入数据*/ Connection con = null; CallableStatement cstmt = null; int row = 0; /获取GUI信息 String stuID = stuIDTextField.getText(); String stuName = stuNameTextField.getText(); String stuDepartment = (String) departComboBox.getSelectedItem(); String stuClass = (String) classComboBox.getSelectedItem(); /检测 if (stuID.equals(“) | stuName.equals(“) JOptionPane.showMessageDialog(this, “请填写完整“); return; try /创建连接 con = DBUtil.getConn(); /创建执行对象,调用存储过程 cstmt = con.prepareCall(“call insertData(?,?,?,?)“); /设置存储过程的参数,从1开始 cstmt.setString(1, stuID); cstmt.setString(2, stuName); cstmt.setString(3, stuDepartment); cstmt.setString(4, stuClass);,/*执行存储过程*/ /增删改都使用executeUpdate()方法 row = cstmt.executeUpdate(); if (row != 0) JOptionPane.showMessageDialog(this, “插入成功“); stuIDTextField.setText(“); stuNameTextField.setText(“); catch (SQLException ex) JOptionPane.showMessageDialog(this, “插入失败“, “错误“, JOptionPane.ERROR_MESSAGE); catch (Exception ex) ex.printStackTrace(); finally DBUtil.closeConn(); ,CallableStatement,常用方法,CallableStatement案例,根据姓名查找 Connection con = null; CallableStatement cstmt = null;/注意添加的包sql包 ResultSet rs = null;/结果集 try /创建连接 con = DBUtil.getConn(); /创建执行对象 cstmt = con.prepareCall(“call queryByNameProc(?)“); /设置参数值 cstmt.setString(1, stuNameTextField.getText(); /执行查询 rs = cstmt.executeQuery(); /*将结果集存放到集合中然后在表中显示-略*/,两层结构设计,数据库,应用程序,界面设计和数据访问在同一个类中,界面发生改动 容易引起数据访问改动,三层结构设计,JFrame JDialog,表示层(view),业务逻辑层(bl),数据访问层(dao),数据库,用户界面类,业务逻辑类,数据访问类,xxxBL,xxxDao,对数据库的 增删改查,调用Dao层的方法,调用bl层的方法,三层结构案例,正则表达式的应用,什么是正则表达式 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要 ,例如:检测输入的身份证号是不是全部都是数字并且是18位,检测输入的Email地址是否符合要求等 正则表达式描述了一种字符串匹配的模式,可以检查一个串是否含有某种子串、将匹配的字符串做替换或者从某个串中取出符合某个条件的字串等 正则表达式常用的是数据验证,就是用某种模式去匹配一类字符串。实际就是使用特定的字符组成一个模式,然后将具体的字符串与该模式进行匹配,若符合模式要求返回true,否则返回false,字符串直接匹配正则表达式,public boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式regex 匹配正确时返回true,匹配错误时返回false 例:匹配指定字符串 要求:指定字符串必须是6-20位,只能由字母数字下划线组成,并且开头必须是字母 String regex = “a-zA-Z1a-zA-Z0-9_5,19$“; boolean isMatch = 指定字符串.matches(regex);,常用正则表达式,匹配用户名:由字母数字下划线组成且开头必须是字母 a-zA-Z1a-zA-Z0-9_n,m$ :匹配开始 $:匹配结束 :字符集中任意一个 n,m:至少匹配n次,至多匹配m次,匹配数字字符串 0-9+$:匹配一个数字或多个数字 0-9n$:匹配n次数字字符 身份证号:0-918$ 银行密码:0-96
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 想要抱抱的小猪教学课件
- 河南省淮阳县第一高级中学2026届化学高一上期中检测试题含解析
- 悯农课件锄禾
- 2026届赣湘粤三省六校化学高二第一学期期中考试试题含解析
- 上海市二中学2026届高三化学第一学期期末教学质量检测模拟试题含解析
- 夜饭营销策划方案
- 乡镇农业工作个人工作方案
- 吉他乐理初级试题及答案
- 安阳政治试题及答案
- 粮食收购面试题及答案
- 2025上海市八年级升九年级数学暑假提升讲义:相似三角形压轴题(六大题型)原卷版
- 2025年工业互联网工程技术人员考核试题题库及答案
- 供货组织方案范文
- 农行OCRM系统讲解
- 2025年《药品经营和使用质量监督管理办法》培训试题及答案
- 2024年云南省县乡教师选调考试《教育学》真题汇编带解析(原创题)
- 工贸安全员考试题库及答案大全
- 羊肚菌栽培及其管理课件
- 教师身体健康管理指南
- 2025高空作业考试试题及答案(完整版)
- 出租车车辆GPS定位承包合同范本
评论
0/150
提交评论