依操做方式将驱动程序分为四种类型:(1)Type1:JDBC-ODBC Bridge Driver:由Microsoft主导的数据库链接标准,参考ODBC制定而来(2)Type2:Native API Driver:会以原生方式,调用数据库提供的原生数据库,JDBC的方法调用会转换为原生连接库,4种类型中最快的驱动程序,使用前必须先在各平台进行驱动程序的安装设定(3)Type3:JDBC-Net Driver:将JDBC方法转换为特定的网络协议调用,目的是远程与数据库特定的中介服务器或组件,中介服务器或组件再与数据库进行操做,能够跨程序,更换数据库系统只需更换中介组件,弹性好,速度慢(4)Type4:Native Protocol Driver:驱动程序会将JDBC调用转换为与数据库特定的网络协议,跨程序,弹性没有Type3好,最多见的驱动器类型html
java.sql.DriverManager
,必须调用其静态方法registerDriver()
进行注册java.lang.class
类的forName()
动态加载驱动程序类Class.forName()
(2)自行创建Driver操做接口类的实例(直接撰写代码java.sql.Driver driver = new com.mysql.jdbc.Driver()
)(3)启动JVM时指定jdbc.drivers属性(执行java命令时java -Djdbc.drivers=com.mysql.jdbc.Driver;XXXDriver YourProgram
)指定多个驱动程序类,用分号间隔(4)设定JAR中/service/java.sql.Driver文档getConnection()
,例Connectin conn = DriverManager.getConnection(jdbcUrl,username,password);
(JDBC URL定义了链接数据库时的协议:子协议:数据源识别)取得Connection对象后,使用isClosed()
方法测试与数据库的链接是否关闭,再也不须要链接必须使用close()
来关闭与数据库的链接,以释放链接时相关的必要资源,可使用尝试自动关闭资源语法java
java.sql.Statement
,使用Connection的createStatement()
创建Statement对象createStatement()
创建Statement对象executeUpdate()
(在表中插入一笔数据,返回int结果,表示数据变更的笔数)、executeQuery()
(用于SELECT等查询数据库的SQL,返回java.sql.ResultSet对象,表明查询结果,会是一笔一笔的数据)next()
移动至下一笔数据,返回true或false表示是否有下一笔数据,接着可使用getXXX()
取得数据execute()
能够用来执行SQL,并可测试SQL是执行查询或更新,返回true表示SQL执行将返回ReaultSet
做为查询结果,可使用getResultSet()
取得ResultSet结果,返回false,表示SQL执行会返回更新笔数或没有结果,能够用getUpdateCount()
取得更新笔数Statement或ResultSet不使用时,使用close()
关掉,Statement关闭时,所关联的ResultSet也会自动关闭mysql
executeQuery()
、executeUpdate()
时,若是有些部分是动态的数据,必须用+连字符串接字符串以组成完整的SQL语句java.sql.PrepareStatement
,使用Connection的preparedStatement()
方法创建好预先编译好的SQL语句,用“?”代替参数中会变更的部分,须要真正指定参数执行时,再使用setInt()
、setString()
等方法指定“?”处应有的参数executeQuery()
或executeUpdate()
方法后,能够调用clearParameters()
清除设置的参数,以后就能再次使用这个PreparedStatement实例prepareCall()
创建CallableStatement异常以外,同样是使用setXXX()
设定参数,查询操做使用executeQuery()
,更新操做使用executeUpdate()
,使用registerOutParameter()
注册输出参数PreparedStatement
或CallableStatement
时,注意SQL类型与Java数据类型的对应java.sql.Date
,日期格式是“年、月、日”,表示时间使用java.sql.Time
,时间格式为“时、分、秒”,java.sql.Timestamp
格式“时、分、秒、微秒”对于TimeStamp实例,可使用toInstant()
方法将之转为Instant实例,Instant实例能够经过TimeStampe的from()
静态方法将之转为TimeStampe实例git
MessageDAO依赖于javax.sql.DataSource接口,能够经过其自定义的getConnection()
方法取得Connection正则表达式
next()
移动数据光标至下一笔数据,然后使用getXXX()
方法来取得数据createStatement()
或prepareStatement()
方法创建Statement或PreparedStatement实例时,能够指定结果集类型与并行方式
absolute()
、afterlast()
、beforeFirst()
、first()
、last()
进行绝对位置移动,使用relative()
、previous()
、next()
进行相对位置移动,成功返回true,使用isAfterLast()
、isBeforeFirst()
、isFirst()
、isLast()
判断目前位置必须选取NOT NULL的值sql
addBatch()
方法来收集SQL,并使用executeBatch()
方法将所收集的SQL传送出去SQL的执行顺序就是addBath()
时的顺序数据库
经过PreparedStatement的setBlob()
来设定Blob对象,读取数据时,能够经过ResultSet的getBlob()
取得Blob对象服务器
setAutoCommit()
方法,给它false自变量,提示数据库开始交易commit()
,提示数据库确认操做,中间发生错误,调用rollback()
,提示数据库撤销全部的执行getTransactionIsolation()
取得数据库目前的隔离行为设定,经过setTransactionIsolation()
可提示数据库设定指定的隔离行为,可设定常数是定义在Connection上
TRANSACTION_NONE
TRANSACTION_UNCOMMITTED
TRANSACTION_COMMITTED
TRANSACTION_REPEATABLE_READ
幻读,设定隔离层为“可循序”TRANSACTION_SERIALIZABLE
网络
JDBC,经过Connection的getMetaData()
方法取得DatabasemetaData对象,经过该对象提供的方法取得数据库总体信息,Result表示查询到的数据学习
RowSet定义了列列集合基本行为,其下有JdbcRowSet(联机式的)、CachedRowSet(脱机式的)、FilteredRowSet、JoinRowSet与WebRowSet五个标准列操做子接口,定义在javax.sql.rowset
本周代码调试没有错误
B .DirectoryStream
C .FileStore
D .FileSystem
『考点』:FileSystem的getRootDirectorie方法能够取出文件系统根目录信息。对NIO各个方法还不够熟悉。
正则表达式”(‘|”)(.*?)\1”匹配 “'Hello',"World””的结果是()
A .不匹配
B .'Hello'
C ."World"
D .'Hello',"World"
解析:反向引用 \1 表明第一个()中的匹配内容。错题缘由:漏选
正则表达式 r.t 可以匹配字符串()
A .rat
B .rt
C .rut
D .root
正确答案: A C
r.t 表示 r开着,中间为任意字符接着为t的三字母字符串
abc? 匹配( )
A .
ab
B .
abc
C .
abcc
D .
abccc
答案:AB
解析: ? 重复0或1次……
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
基于评分标准,我给本博客打分:XX分。得分状况以下:xxx
本周学习了数据库及其在Java中对应的操做,开始不是很明白,百度关于SQL的一些知识,就懂了许多
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 2/2 | 20/20 | |
第二周 | 186/186 | 2/4 | 18/38 | |
第三周 | 689/875 | 3/7 | 22/60 | |
第四周 | 242/1117 | 2/9 | 30/90 | |
第五周 | 698/1815 | 2/9 | 30/120 | |
第六周 | 1269/3084 | 2/9 | 30/120 | |
第七周 | 342/3426 | 2/9 | 30/120 | |
第八周 | 398/3824 | 2/9 | 30/120 | |
第九周 | 1198/5022 | 2/9 | 30/120 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进本身的计划能力。这个工做学习中很重要,也颇有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:24小时
实际学习时间:24
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)