28JAVA与数据库2JDBC详解Word格式文档下载.docx
- 文档编号:8285390
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:13
- 大小:157.99KB
28JAVA与数据库2JDBC详解Word格式文档下载.docx
《28JAVA与数据库2JDBC详解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《28JAVA与数据库2JDBC详解Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。
它是由一组接口和类组成的,常用的接口和类有哪些?
3)、MySQL的驱动包是谁提供的?
这个驱动包的内容是什么?
4)、JAVA通过JDBC连接数据库的步骤有那几步?
●引入MySQL的驱动包5.1.37
●建立一个DBUtil工具类,用来提供驱动注册、获取数据库连接、释放资源的操作
●通过DBUtil的getConnection方法获得数据库连接conn
●通过conn获得一个Statement对象,用来发送SQL给数据库服务器
●如果是select操作,通过ResultSet处理结果集
●通过DBUtil的release释放资源
5)、资源释放的顺序是什么?
2、Statement详解
15分钟
教学方法:
实际操作分析,讨论,解释
1)、Statement接口
Statement接口只能用来执行静态SQL,即不带参数的的SQL,获得Statement的方法有以下几种:
返回
Statement
的
java.sql
中的方法
Statement
Connection.createStatement()
创建一个
对象来将SQL语句发送到数据库。
Connection.createStatement(int
resultSetType,int
resultSetConcurrency)
对象,该对象将生成具有给定类型和并发性的
ResultSet
对象。
resultSetConcurrency,int
resultSetHoldability)
对象,该对象将生成具有给定类型、并发性和可保存性的
ResultSet.getStatement()
获取生成此
对象的
Statement的发送SQL语句给数据库的方式分为:
executeQuery、executeUpdate
课堂实例:
完成jdbcDemo工程中的StudentDAO接口设计
增加一条student数据
删除一条student数据
修改一条student数据
查询数据库中的全部数据
查询数据库中学生人数
2)、SQL注入
例如,在数据库中给student表增加一个password属性
模拟登录操作
控制台提示用户输入学号,等待用户输入
控制台提示用户输入密码,等待用户输入
系统获取学号和密码,判断登录是否成功
将登录结果显示在控制台上
publicclassSQLInjoin{
publicstaticvoidmain(String[]args){
Connectionconn=DBUtil.getConnection();
Statementstmt=null;
ResultSetrs=null;
Stringsno="
"
;
Stringpassword="
Scannersc=newScanner(System.in);
System.out.println("
请输入学号"
);
sno=sc.nextLine();
请输入密码"
password=sc.nextLine();
try{
stmt=conn.createStatement();
Stringsql="
select*fromstudentwheresno='
+sno+"
'
andpassword='
+password+"
System.out.println(sql);
rs=stmt.executeQuery(sql);
if(rs.next()){
System.out.println("
登录成功"
}else{
登录失败"
}
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
DBUtil.release(rs,stmt,conn);
}
}
}
3)、PreparedStatement接口
ResultSet
executeQuery()
在此
PreparedStatement
对象中执行SQL查询,并返回该查询生成的
int
executeUpdate()
对象中执行SQL语句,该语句必须是一个SQL数据操作语言(DataManipulationLanguage,DML)语句,比如
INSERT、UPDATE
或DELETE
语句;
或者是无返回内容的SQL语句,比如DDL语句。
课堂示例:
如何使用PreparedStatement完成增删改查。
3、存储过程
存储过程的调用:
存储过程是一种特殊的SQL语句,用于对数据库进行操作。
存储过程放在数据库中,它可以把复杂的查询与客户端隔离,而只给客户提供必要的查询接口。
使用存储过程的好处是性能好,他在服务器上执行,离数据最接近,比直接发送SQL语句速度要快得多。
存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。
然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
publicclassCallProcedure{
/**
*@paramargs
*/
Connectionconn=null;
//动态导入数据库的驱动
Class.forName("
com.mysql.jdbc.Driver"
//获取数据库链接
conn=DriverManager.getConnection(
"
jdbc:
mysql:
//localhost:
3306/stu"
"
root"
//创造调用存储过程的SQL
{CALLtest_procedure()}"
//执行调用存储过程的SQL语句
stmt=conn.prepareCall(sql);
stmt.execute(sql);
System.out.println("
OK!
}catch(Exceptione){
}finally{
//关闭Statement
try{
stmt.close();
}catch(Exceptione){
//关闭Connection
conn.close();
4、ResultSet结果集与MySQL数据类型
BIT
(1)(newinMySQL-5.0)
BIT
java.lang.Boolean
BIT(>
1)(newinMySQL-5.0)
byte[]
TINYINT
java.lang.BooleaniftheconfigurationpropertytinyInt1isBitissettotrue(thedefault)andthestoragesizeis1,orjava.lang.Integerifnot.
BOOL,BOOLEAN
SeeTINYINT,aboveasthesearealiasesforTINYINT
(1),currently.
SMALLINT[(M)][UNSIGNED]
SMALLINT[UNSIGNED]
java.lang.Integer(regardlessifUNSIGNEDornot)
MEDIUMINT[(M)][UNSIGNED]
MEDIUMINT[UNSIGNED]
java.lang.Integer,ifUNSIGNEDjava.lang.Long(C/J3.1andearlier),orjava.lang.IntegerforC/J5.0andlater
INT,INTEGER[(M)][UNSIGNED]
INTEGER[UNSIGNED]
java.lang.Integer,ifUNSIGNEDjava.lang.Long
BIGINT[(M)][UNSIGNED]
BIGINT[UNSIGNED]
java.lang.Long,ifUNSIGNEDjava.math.BigInteger
FLOAT[(M,D)]
FLOAT
java.lang.Float
DOUBLE[(M,B)]
DOUBLE
java.lang.Double
DECIMAL[(M[,D])]
DECIMAL
java.math.BigDecimal
DATE
java.sql.Date
DATETIME
java.sql.Timestamp
TIMESTAMP[(M)]
TIMESTAMP
TIME
java.sql.Time
YEAR[(2|4)]
YEAR
IfyearIsDateTypeconfigurationpropertyissettofalse,thenthereturnedobjecttypeisjava.sql.Short.Ifsettotrue(thedefault)thenanobjectoftypejava.sql.Date(withthedatesettoJanuary1st,atmidnight).
CHAR(M)
CHAR
java.lang.String(unlessthecharactersetforthecolumnisBINARY,thenbyte[]isreturned.
VARCHAR(M)[BINARY]
VARCHAR
BINARY(M)
BINARY
VARBINARY(M)
VARBINARY
TINYBLOB
TINYTEXT
java.lang.String
BLOB
TEXT
MEDIUMBLOB
MEDIUMTEXT
LONGBLOB
LONGTEXT
ENUM('
value1'
'
value2'
...)
SET('
5、批处理Batch
批处理与非批处理分别插入2万条记录的性能比:
6、事务概念及处理
1)、什么是事务
publicclassRunInsert{
"
3306/jdbc_teaching"
//开启事务
conn.setAutoCommit(false);
//创造SQL语句
INSERTINTOuser_list(user_name,user_password)VALUES('
Eric'
'
123'
)"
//执行SQL语句
stmt.executeUpdate(sql);
//提交事务
mit();
//回滚事务
conn.rollback();
}catch(Exceptione2){
事务与批处理的混合使用,实际上不就是事务么?
?
publicclassRunInsertBench{
//创造执行SQL语句的环境
//添加处理进当前批次
stmt.addBatch("
INSERTINTOuser_list(user_name,user_password)VALUES('
Name789'
234'
)"
Name567'
//执行当前批次
stmt.executeBatch();
7、properties配置文件
1、properties文件
url=jdbc:
//202.196.38.108:
3306/stu
userName=root
passwd=root
driverName=com.mysql.jdbc.Driver
2、DBUtil工具类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 28 JAVA 数据库 JDBC 详解