201711671235学习《Java程序设计》第十一周学习总结

教材学习内容总结

1.JDBC

保证java编写的程序的独立性:java提供专门用于操作数据库的API,即JDBC

JDBC操作不同的数据库原因->连接方式不同

使用JDBC进行的操作
与一个数据库建立连接
向已连接的数据库发送SQL语句
处理SQL语句返回的结果

2.连接数据库

程序和数据库交互信息

A.与数据库建立连接

a.加载JDBC-数据库驱动

b.和指定的数据库建立连接

(a)下载数据库驱动

(b)加载数据量驱动

try{Class.forName(“com.mysql.jdbc.Driver”);}catch(Exception e){}  其中jdbc.Driver是驱动程序名

(c)连接数据库

DriverManager类中有两个建立连接的类方法

Connection getConnection(java.lang.String,java.lang.String,java.lang.String) Connection getConnection(java.lang.String)

Connection con;

String uri=“jdbc:mysql://IP地址:端口/数据库名?useSSL=ture”

Connection con;

String uri=“jdbc:mysql://IP地址:端口/数据库名?user=用户名&password=密码&useSSL=ture”

user=“用户名”

password=“密码”

 

try{con=DriverManager.getConnection(uri,user,password);}

catch(SQLException e){System.out.println(e)}

try{con=DriverManager.getConnection(uri)}

catch(SQLException e){System.out.println(e)}

DriverManager. getConnection(java.lang.String)返回一个Connection对象

(d)主注意汉字问题

String uri=“jdbc:mysql://IP地址:端口/数据库名?useSSL=ture&characterEncoding=utf-8

3.查询操作

3.1向数据库发送SQL查询语句

sql为SQL语句对象 try{Statement sql=con.createStatement();}catch(SQLException e){}

3.2处理查询结果

rs存放查询结果(rs由按“列”(字段)组织的数据行构成) ResultSet rs=sql.executeQuery(“Select语句”)

Result对象一次只能看到一个数据行,使用next()方法移到下一个数据行

rs.getXxx(int columnIndex(位置索引))// rs.getXxx(int columnName(列名))《=》获得字段值(列值)

3.3关闭连接

应用程序在使用ResultSet对象中的数据时,就必须保持和数据库的连接

con.close()

4.1顺序查找

Result对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置为游标位置,位于第一行的前面

4.2控制游标

结果集的游标的初始位置在结果集第一行的前面,使用next()方法向下(后)移动游标,移动成功返回true

返回一个滚动的结果集

Statement stmt=con.createStatement(int type,int concurrency)

type取值决定滚动方式

ResultSet.TYPE_FORWORD_ONLY 只能向下移动

ResultSet.TYPE__SCROLL_INSENSITIVE

可以上下移动,当数据库变化时,结果集不变
ResultSet.TYPE__SCROLL_SENSITIVE 返回可滚动结果集,当数据库变化时,当前结果集同步变化

concurrency取值决定是否可以用结果集更新数据库

ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库的表
ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库的表

ResultSet re=stmt.executeQuery(SQL语句);

public boolean previous()  将游标上下移动,返回boolean型数据,当移到结果集的第一行之前时返回false
public void beforeFirst()/afterLast()

将游标移到结果集的初始位置,即第一行之前

/将游标移到结果集最后一行之后

public void first()/last()

将游标移到结果集第一行/最后一行
public boolean isAfterLast()/isBeforeFirst() 判断游标是否在最后一行之后/第一行之前
public boolean isLast()/isFirst() 判断游标是否在最后一行/第一行
public int getRow() 得到当前游标所指向的行号,行号从1开始,如果结果没有行,返回0
public boolean absolute(int row) 将游标移到参数row指定的行(row为负值时表示倒数)

4.3条件与排序查询

where子语句 一般格式;select 字段 from 表名 where 条件

a.字段值与固定值比较:=

b.字段值在某个区间的范围:and

c.使用某些特殊的日期函数,如year、month、day

select * from mess where year(birthday)<1980 and month(birthday)<=10

d.使用某些特殊的时间函数,如hour、minute、second

select * from time_list where second(shijian)>56

e.用操作符like进行模式匹配,%:多个字符、_:一个字符

排序:order by +排列的标准

5.更新、添加与删除操作

Statement对象调用方法:public int executeUpdate(String sqlStatement);通过参数sqlStatement指定的方式实现对数据库表中的更新、添加和删除操作。

更新 update 表 set 字段 = 新值 where <条件子句>
添加 insert  into 表(字段列表)values(对应具体记录)
删除 delete from 表名 where <条件子句>

6.1使用预处理语句

优点:减轻数据库的负担,提高访问数据库的速度

con.prepareStatement(String sql)

 对参数sql指定的SQL语句进行预编译处理 

生成该数据库底层的内部命令,并将命令封装在PrepareStatement对象中
对象调用 ResultSet executeQuery()
 

boolean execute()

  int executeUpdate()

6.2使用通配符

通配符代替字段的值,用数字1代表第一个?,2代表第二个?

预处理语句执行之前设置通配符的具体值

预处理语句设置通配符?的值的常用方法:

void setDate/setDouble/setFloat/setInt/setLong/setString(int parameterIndex,Date/double/float/int/long/String x)

7.通用查询

ResultSetMetaData metaData=rs.getMetaData() 得到一个对象
int columnCount = metaData.getColumnCount() 列的数目
String columnName = metaData.getColumnName(i) 第i列的名字

8.事务

保证数据库的完整性与一致性

事务处理即应用程序保证事务中的SQL语句要么全部执行,要么一个都不执行

JDBC事务处理步骤

用setAutoCommit(boolean b)关闭自动提交模式 关闭con这种自动提交模式
commit()处理事务 视图让事务中所有的SQL语句生效
rollback()处理事务失败 恢复到commit()方法执行之前

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 20篇 400小时 会用java语言独立设计程序
第一周 13/13 1/1  5/5 学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周 140/143  1/2 10/15 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周 276/419 1/3 20/35 java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周 600/1019 1/4 30/45 类和对象
第五周

150/1169

1/5 10/55 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周 100/1269 1/6 8/63 接口定义、使用方法和作用
第七周 100/1369 1/7 9/72 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周 150/1869 1/8 10/82 java常用实用类和方法
第九周 100/1969 1/9 20/102 组件、容器、窗口、(如何处理事件:事件源,监视器、接口)
第十周 80/2049 1/10 10/112 输入输出流和各种流的作用、构造方法
第十一周 92/2141 1/11 7/119 连接数据库步骤、查询、更新、添加、删除语句

参考文献

《java2实用教程(第5版)》

猜你喜欢

转载自blog.csdn.net/weixin_40803490/article/details/84844172