JDBC访问及相关问题
来源:互联网 发布:软件项目沟通计划 编辑:程序博客网 时间:2024/06/01 23:14
1、加载JDBC驱动程序:
加载想要连接的数据库的驱动到,这通过java.lang.Class类的静态方法forName(String className)实现,
Class.forName("com.mysql.jdbc.Driver") ;
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、相关URL
String url=” jdbc:mysql: //localhost:3306/test”
String user=”root”
3、创建数据库的连接
Connection con= DriverManager.getConnectin(url , username , password )
4、创建一个Statement 或者PreparedStatement
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
// CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
(1) ResultSet executeQuery(sqlString):执行查询数据库的SQL语句 ,返回一个结果集(ResultSet)对象。
(2) int executeUpdate(sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
(3) execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、访问结果
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反。ResultSet、Statement、Connection
import java.sql.*;public class jdbcConn { public static void main(String[] args) { try { Class.forName("org.apache.derby.jdbc.ClientDriver"); } catch(ClassNotFoundException e) { System.out.println("Class not found "+ e); } System.out.println("JDBC Class found"); int no_of_rows = 0; try { Connection con = DriverManager.getConnection ("jdbc:derby://localhost:1527/testDb","username", "password"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery ("SELECT * FROM employee"); while (rs.next()) { no_of_rows++; } System.out.println("There are "+ no_of_rows + " record in the table"); } catch(SQLException e){ System.out.println("SQL exception occured" + e); } }}
一、Statement、PreparedStatement、CallableStatement
1.PreparedStatement是预编译的,对于批量处理能够大大提高效率.用于执行带参数的sql语句,同时可以防止sql注入攻击(通过SQL命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器)
2. Statement 对象。在对数据库仅仅运行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的优点。
3.statement执行不带参数的sql语句,每次执行都要编译该sql语句,preparedstatement是预编译得,preparedstatement支持批处理
4.CallableStatement提供调用数据库的存储接口
二、getString()、getInt()、getObject()
以上几种方法都是从ResultSet中获得数据,当结果集较小时不用考虑性能,但是当结果集非常大,前两者会抛出异常,因为这两种方法是一次性将所有数据都放入到内存中,而getObject()则不会有这个问题。
- JDBC访问及相关问题
- 使用JDBC访问数据库的相关问题
- JDBC配置DataSource及相关问题
- logstash-input-jdbc 同步原理及相关问题解读
- logstash-input-jdbc 同步原理及相关问题解读
- jdbc 相关问题
- Oracle 链接ArSDE及C#访问Oracle 问题相关
- Redis非授权访问获取webshell及相关问题
- jdbc mysql链接相关问题
- JDBC相关(一):JDBC简介及相关类介绍
- elasticSearch数据导入工具logstash-input-jdbc 同步原理及相关问题解读
- Phoenix的安装及JDBC访问
- JDBC配置相关信息及范例
- php 访问mysql 相关问题
- JDBC访问Mysql出现中文乱码问题
- 解决JDBC访问数据库中文乱码问题
- 汉字编码及相关问题
- 相关问题及解决办法
- 「zeppelin」: java.lang.NoSuchMethodError: org.apache.hadoop.tracing.SpanReceiverHost.get(Lorg/a
- java大文件复制最高效方法:多线程FileChannel
- Win7下Anaconda2和Anaconda3共存可以使用pip命令
- Hibernate基础(4)
- vue 指令标签
- JDBC访问及相关问题
- (转)Java 详解 JVM 工作原理和流程
- tensorflow实现简单的卷积神经网络
- hbuilder打包apk如何发布到安卓市场?
- 桌面IE图标删不掉解决方案
- 「zeppelin」:.jackson.databind.JsonMappingException: Jackson version is too old 2.5.3
- 字节流与字符流区别详解
- C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情
- 连接tcp服务器出现的问题及解决方法