JDBC总结(不定时更新)
来源:互联网 发布:linux message日志分析 编辑:程序博客网 时间:2024/04/28 23:26
那些名词:
- JDBC API:应用程序开发者使用的api.
- JDBC驱动管理器:Sun公司为第三方驱动程序提供的驱动管理器.
- JDBC驱动程序:由第三方供应商提供的java与数据库连接的桥梁.
- JDBC驱动api:Sun公司为数据库开发人员提供的驱动开发api.
详情如下图所示:
JDBC配置:
- 下载驱动,如mysql-connector*.jar等,为一个jar文件
- 注册驱动器类:
/*从供应商下载的驱动器类名为com.mysql.jdbc.Driver, 解压jar包可以找到Driver.class其路径即是名字*/ //法一: Class.forName("com.mysql.jdbc.Driver"); //法二: System.SetProperty("jdbc.drivers","com.mysql.jdbc.Driver");
- 连接到数据库:
//mysql -->修改为你的数据库名字//127.0.0.1:3306 --> 访问数据库的地址//world访问的数据库的名字String url = "jdbc:mysql://127.0.0.1:3306/world";//数据库用户名,必须有权限访问worldString userName = "root";//数据库用户密码String password = "root";Connection conn = DriverManager.getConnection(url,userName,password);
使用连接,以下详细讲解
关闭连接
if(conn != null){ conn.close();}
使用数据库:
- Statement的使用
//一个连接可以创建多个Statement,但每个Statement只能打开一个结果集Statement st1 = conn.createStatement();//执行查询只能使用executeQueryResultSet rs1 = st1.executeQuery("SELECT * FROM myTable");...//Statement与ResultSet使用完应该及时关闭rs1.close();st1.close();//执行其他操作使用executeUpdate,其不返回结果集Statement st2 = conn.createStatement();st2.executeUpdate("INSERT INTO myTable(name,age) values("haha",10)");
- PreparedStatement:用于批量查询或更新等操作,每次操作只需重新设置?的值,然后查询即可
String preparedSql = "SELECT FROM myTable where age = ?",name = ?)PreparedStatement ps = conn.prepareStatement(preparedSql);//将第一个?设为24ps.setInt(1,24);//将第二个?设为"haha"ps.setObject(2,"haha");//执行查询ResultSet rs = ps.executeQuery();/*也可以 ps.execute(); rs = ps.getResultSet();*/
- ResultSet:类似迭代器,但其初始位置指向第一行前,然后调用next()指向下一行(迭代器则是跨过下一行),若无下一行则next()方法返回false。所以第一行数据应该是rs.next()然后执行rs.getObject(index);而不是直接执行rs.getObject(index).index为查询行数据的列号,起始值为1。
注意事项:
- Statement执行语句时,对于String变量应该用单引号包含,否则语句无法执行。
String name = "BOB";st.executeQuery("delete from message where name = '"+name+"')");
PreparedStatement采用预编译的形式,所以在多次执行的时候,效率明显高于Statement,但单条语句还是建议使用Statement。
可滚动的结果集:默认情况下结果集将一直调用next()方法直到该方法返回false,不能回滚到上一行。
Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs = st.executeQuery();PreparedStatement st1 = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs1 = st1.executeQuery();/*则两个结果集均可调用previous()回滚到上一行,并可用relative(n),向下滚动|n|行(n>0)或回滚|n|行(n<0).absolute(x),将直接定位至第x行*/
- 可更新的结果集:
Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rs = st.executeQuery();/*结果集可以调用rs.update("name","Bob");+rs.updateRow();更新行数据。可以调用rs.deleteRow()删除当前指针所指的行。调用getConcurency()查看当前结果集是否可更新。*/
0 0
- JDBC总结(不定时更新)
- 猜猜看软件-学习总结(不定时更新)
- 最短路模板总结(不定时更新)
- 程序员笔试面试题总结(不定时更新)
- Android小技巧总结(不定时更新)
- bug修改记录总结(不定时更新)
- 虚拟机检测绕过总结--不定时更新
- linux常用命令总结(不定时更新)
- java知识总结,不定时更新
- 笔记(不定时更新)
- 资料(不定时更新)
- 源码下载地址(不定时更新)
- 千奇百怪问题集(不定时更新)
- 前端笔记(不定时更新)
- vim插件集合(不定时更新)
- 算法小知识 (不定时更新)
- ACM 注意事项 (不定时更新)
- linux系统管理常用命令(不定时更新)
- 二十二、C++程序设计必知:友元
- web流程
- 2015.4.25.14.15_多态_2015.4.25_Java基础之interface && 多态总结
- 史上最全github使用方法:github入门到精通
- Android 如何让你的App赚钱?
- JDBC总结(不定时更新)
- php 路由解析规则
- android仿新浪微博项目一路上碰到的错误笔记(持续更新)
- Accept
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- jQuery metadata.js
- a hotfix to resolve an issue with memory mapped files on Windows
- linux压缩和解压缩命令大全
- Deprecated: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() inste