第四周总结:JDBC+HTML

ResultSetMetaData

  • 作用:获取数据结果集的相关数据
  • 使用方法:rs.getMetaData().
  • 通过获取结果集元数据,可以获得列名称,列数量,列数据类型等
  • 使用例子
try {
			conn = DBUtil.getConnection();
			String sql ="select * from emp";
			Statement st = conn.createStatement();
			ResultSet rs = st.executeQuery(sql);
			//结果集元数据
			ResultSetMetaData meta = rs.getMetaData();
			int n = meta.getColumnCount();
			String str = meta.getColumnName(1);
			String str2 = meta.getColumnName(2);
			String str3 = meta.getColumnName(3);
			System.out.println(n+","+str+","+str2+","+str3);
			for(int i=1;i<=n;i++) {
				System.out.println(meta.getColumnName(i));
			}
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			DBUtil.Close(conn);
		}

事务(Transaction)

  • 事务的特性(ACID)
    - 原子性:事务必须是独立的工作单位,对于其数据的修改,要么都执行,要么都不执行
    - 一致性:事务在完成时,必须保持一致
    - 隔离性:事务所做的修改必须与任何其他事务隔离
    - 持久性:对系统的影响是永久的
  • 事务是数据库的概念,JDBC支持事务,本质还是在数据库中实现的
  • 数据库提供了事务控制功能,支持ACID特性,JDBC提供了API方便调用数据库的事务功能
  • DDL语句不支持事务
  • 相关API

    Connection.getAutoCommit() :获得当前事务的提交方式
    Connection.setAutoCommit():设置事务的提交属性(true或者false),默认为true自动提交
    Connection.commit():提交事务
    Connection.rollback():回滚事务

  • 使用例子:

String sql1 = "update account set balance=balance+? where id = ?";
		String sql2 = "select balance from account where id = ?";
		Connection conn = null;
		try {
			conn = DBUtil.getConnection();
			conn.setAutoCommit(false);
			PreparedStatement ps = conn.prepareStatement(sql1);
			//减钱
			ps.setDouble(1, -money);
			ps.setInt(2, from);
			int n = ps.executeUpdate();
			if(n!=1) {
				throw new Exception("扣错了");
			}
			//增加
			ps.setDouble(1,money);
			ps.setInt(2, to);
			n= ps.executeUpdate();
			if(n!=1) {
				throw new Exception("加错了");
			}
			ps.close();
			//检查
			ps = conn.prepareStatement(sql2);
			ps.setInt(1,from);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				int x =rs.getInt(1);
				if(x<0) {
					throw new Exception("透支");
				}
			}
			conn.commit();	
		}catch(Exception e) {
			e.printStackTrace();
			DBUtil.rollback(conn);
		}finally {
			DBUtil.Close(conn);
		}

批量参数处理

  • 批处理:发送到数据库作为一个单元执行的一组更新语句
  • 优点:批处理降低了应用程序和数据库间的网络调用,相对于单个SQL语句,批处理更为有效
  • 批处理数量不宜太多,防止批量过大产生OutOfMemory
  • 批量更新API

    addBatch(String sql) Statement类的批量添加
    addBatch(String sql) prepareStatement 类的批量添加,将多条数据添加得到PS的SQL列表
    executeBatch() 将语句发送到数据库,返回值大于零代表执行成功
    clearBatch() 清空添加的语句

  • 使用例子
		String sql = "insert into user (id,name,pwd) values(?,?,?)";
		Connection conn =null;
		try {
			conn=DBUtil.getConnection();
			PreparedStatement ps = conn.prepareStatement(sql);
			for(int i=0;i<100;i++) {
				
				//替换参数
				ps.setInt(1, i);
				ps.setString(2, "name"+i);
				ps.setString(3, "123");
				//将参数添加到缓冲区
				ps.addBatch();
				//分批执行
				if((i+1)%8==0) {
					ps.executeBatch();
				}
			}
			//执行
			int[] n = ps.executeBatch();
			System.out.println(Arrays.toString(n));
			
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			DBUtil.Close(conn);
		}

JDBC自动获取递增属性的方法

  • ResultSet rs = ps.getGeneratedKeys();

HTML基础

  • 1.HTML

    • 用来勾勒出网页的结构和内容
  • 2.css

    • 用来美化网页
  • 3.JavaScript()

    • 让网页呈现动态的数据和效果
  • 4.jQuery

    • 框架,提高JavaScript的开发效率
  • Web所具备的三个要素:

    • 浏览器
    • 服务器
    • Http协议

XML与HTML比较

  1. xml
    • 可扩展标签语言
    • 标签,属性标签的嵌套关系都可扩展
    • 用来存储或传输数据

    可扩展:自定义

  2. Html
    • 超文本标签语言
    • 语法固定
    • w3c组织定义
    • 用来显示数据
    • 有一些特定的版本严格遵守xml规范

    可以将Html理解为标签固定的Xml

HTML属性

  • head部分

    <meta> 可以声明编码
           <meta charset ="utf-8">
    <title> 声明网页的标题  
           <title>名字</title>
    
  • body 部分

    • 标题元素

        基本语法<h#>....</h#>
        - #=1 2 3 4 5 6
        - 即有六个标题
      
    • 段落元素

        <p></p>
        - 与前后文换行分开
        - 添加额外垂直距离
      
    • 列表元素

        <ol></ol> 有序列表
        <ul></ul> 无序列表
       中间使用<li></li>添加元素
        使用嵌套列表时,应在<li></li>中添加另一个列表
      
    • 分区元素

        <div></div> 便于设置不同分区
      
    • 元素的显示方式

        - 块级元素
            - 默认情况下,块级元素会独占一行,即元素前后会换行
            - 如 <p><div><hn>
        - 行内元素                
            - 不会换行,可以和其他行内元素位于一行
            - 如<span><a>
            - <span> 默认没有效果
            - <i> 用来定义斜体
            - 等等元素
      
    • 空格折叠:默认情况下,HTML中的多个空格会被压缩成一个空格

         - <br> 换行
         - 空格 &nbsp
         - <  &it
      
  • 图片

      - <img></img>
      - 绝对路径:从盘符开始写出图片的完整路径
         - 缺点:
             - 写的很长,麻烦
             - 若项目上线时,路径需要改变,则所有路径出错
     - 相对路径
         - 只需要写出图片和网页的相对位置即可
         - 优点
             - 简单,量少
             - 上线时,无论将项目存放到哪,图片的相对位置没有变化
     - ..代表上一级目录
    
  • 超链接

      <a href="网址" target="_blank/_self"> </a>
      默认_self在本页打开
      _black 打开一个新网页
    
  • 超链接的特殊用法

      将超链接链到本网页的某个位置 
      1.这个位置叫做锚点
      2.必须提前声明锚点
      3.顶部默认就是锚点,没有名字
    
    <p><a name="ll">张三</a>是个好人,不但可爱,而且帅</p> 	//锚点的定义
    <a href="#ll">张三</a> 					//锚点的使用
    
  • 表格

      定义表格<table></table> 声明表格范围
      创建行 <tr></tr>
      创建列 <td></td>
      td的重要属性colspan,rowspan 代表单元格所占的列和行
    
  • 行分组

     表头<thead></thead>
     表体<tbody></tbody>
     表尾 <tfoot></tfoot>
    
    	<table border="1" cellspacing="0" width="25%">
    		<thead>
    			<tr>
    				<td>编号</td>
    				<td>名称</td>
    				<td>金额</td>
    			</tr>
    		</thead>
    		<tbody style="color:blue;">
    			<tr>
    				<td>001</td>
    				<td>键盘</td>
    				<td>20</td>
    			</tr>
    			<tr>
    				<td>002</td>
    				<td>鼠标</td>
    				<td>10</td>
    			</tr>
    		</tbody>
    		<tfoot>
    			<tr>
    				<td colspan="2">总计</td>
    				<td>30</td>
    			</tr>
    		</tfoot>
    	</table>
    

表单(form)

  • 表单元素:用来声明数据提交的范围,只有在此范围的元素才可以提交给服务器
    - 属性 action:声明数据提交的目标
  • 表单控件:用来让用户输入数据
    • 第一类input元素,他们之间用type属性区分

      • 文本框

         	<input type="text"/>
         		- value:设置默认值
         		- maxlength:设置最大长度
         		- readonly:设置只读
        
      • 密码框

          <input type="password"/>
          		- 属性同上
        
      • 单选框

          <input type="radio" name="名称">内容
          	- 名称相同的才会互斥单选
          	- checked设置默认选中
        
      • 多选框

          <input type="checkbox"/>内容
          	- checked设置默认选中
        
      • 文件框

          <input type="file">
        
      • 隐藏框

          <input type="hidden"/>
        
      • 按钮

          	value 代表名字
          	submit :提交按钮
          		<input type="submit" value = "注册">
          	reset:将表单变为开始状态
          		<input type="reset" value="重置">
          	button:没有任何功能,需使用js定义功能
          		<input type="button" value="点点">
        
    • 第二 其他元素(三个)

      • label:用来管理表单中的文本

          可以将文本与控件绑在一起,从而增加了控件的受力面积 
          id :指元素的唯一标志,相当于元素的身份证
          任何元素都可以有id,程序员有义务保证元素的id不重复
        
      <input type="checkbox" id="xy"/> 
      <label for="xy">我已阅读并自愿遵守此协议!</label>
      
    • select:下拉框

       城市:<select>
       <option>请选择</option>
       <option>山东</option>
       <option>北京</option>
       <option>天津</option>
       <option>上海</option>
       <option selected>山西</option>
       </select>
       		selected设置默认选中
      
    • textarea文本域

       <textarea cols="30" rows="5" readonly>默认值</textarea>
       				cols:设置文本框列
       				rows:设置行
       				readonly:只读
      
<!-- 表单元素
		用来声明数据提交的范围,
		只有在此范围的元素才可以提交给服务器
	 action:声明数据提交的目标
	 -->
	 <form action="https://www.baidu.com/">
	 	<!--表单控件 用来让用户输入数据 两类 -->
	 	<!-- 第一input元素,他们之间用type属性区分 -->
	 	
	 	
	 	<!--文本框 
	 		value:设置默认值
	 		maxlength:设置最大长度
	 		readonly:设置只读
	 	-->
	 	<p>
	 		账号:<input type="text" value="张三" maxlength="10" readonly/>
	 	</p>
	 	
	 	<!-- 密码框   属性同上-->
	 	<p>
	 		密码:<input type="password"/>
	 	</p>
	 	
	 	<!-- 单选框 name:组名,相同互斥 
	 		checked设置默认选中
	 		-->
	 	<p>
	 		性别:
	 		<input type="radio" name="sex" checked><input type="radio" name="sex" ></p>
	 	
	 	<!-- 多选框 
	 		check 设置默认选中
	 		
	 	-->
	 	<p>
	 		兴趣爱好:
	 		<input type="checkbox" checked/>编程
	 		<input type="checkbox" checked/>学习
	 		<input type="checkbox" />敲代码
	 		<input type="checkbox" />学计算机
	 	</p>
	 	
	 	<!-- 文件框 -->
	 	<p>
	 		头像:<input type="file" />	 		
	 	</p>
	 	<!-- 隐藏框 -->
	 	<p>
	 		<input type="hidden" value="张三"/>
	 	</p>
	 	
	 	<!-- 按钮  
	 		value 代表名字
	 		submit :提交按钮
	 		reset:将表单变为初始状态
	 		button:没有任何功能,需使用js定义功能
	 	 -->
	 	
	 	<p>
	 		<!--  提交按钮  -->
	 		<input type="submit" value = "注册">
	 		
	 		<!-- 重置按钮 变回开始状态-->
	 		<input type="reset" value="重置">
	 		
	 		<!-- 普通按钮 -->
	 		<input type="button" value="点点">
	 	</p>
	 	
	 	
	 	<!-- 第二 其他元素(三个) -->
	 	<!-- label:用来管理表单中的文本
	 		可以将文本与控件绑在一起,从而增加了控件的受力面积 
	 		id :指元素的唯一标志,相当于元素的身份证
	 		任何元素都可以有id,程序员有义务保证元素的id不重复
	 	-->
	 	<p>
	 		<input type="checkbox" id="xy"/> 
	 		<label for="xy">我已阅读并自愿遵守此协议!</label>
	 	</p>	
	 	
	 	<!-- select 
	 		selected 设置默认选中
	 	-->
	 	<p>
	 	城市:<select>
	 		<option>请选择</option>
	 		<option>山东</option>
	 		<option>北京</option>
	 		<option>天津</option>
	 		<option>上海</option>
	 		<option selected>山西</option>
	 	</select>
	 	</p>
	 	
	 	<!-- textarea文本域 
	 		cols:设置文本框列
	 		rows:设置行
	 	-->
	 	<p>
	 		简介:<textarea cols="30" rows="5" readonly>
	 			这是文本域的默认值
	 		</textarea>
	 	
	 	</p>
	 	
	 	
	 	
	 </form>

猜你喜欢

转载自blog.csdn.net/qq_38987390/article/details/89439873
今日推荐