第十一周学习总结————201711671206

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()方法执行之前
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值