JDBC、HTML

一,练习JDBC
–1,开发步骤
//注册驱动,获取连接–使用工具类
//获取传输器
–Statement:用来执行SQL的,但是可能发生SQL注入
–PreparedStatement:用来执行SQL的,先把SQL骨架发送给数据库执行
避免SQL注入的风险,省略了SQL的拼接过程,高效
//执行SQL
–executeQuery():执行查询的SQL,会返回结果集
–executeUpdate():执行增删改的SQL,会返回对数据库的影响行数
//解析结果集
//释放资源 --使用工具类
–2,代码
package cn.tedu;

	import java.sql.Connection;
	import java.sql.PreparedStatement;
	import java.sql.ResultSet;

	//jdbc的练习
	public class Test1 {
	    public static void main(String[] args) {
	//        method();//query
	        method2();//insert
	    }
	    //向dept表里插入数据
	    private static void method2() {
	        Connection conn = null;
	        PreparedStatement ps = null;
	        try{
	            //获取连接
	            conn = JDBCUtils.getConnection();
	            //获取传输器
	            String sql = "insert into dept(dname,loc) values (?,?)";
	            ps = conn.prepareStatement(sql);
	            //设置SQL的参数
	            ps.setString(1,"销售部");
	            ps.setString(2,"一区");
	            //执行SQL
	//            ps.executeQuery();//专门执行查的SQL
	            int rows=ps.executeUpdate();//专门执行增删改的SQL
	            if(rows>0){
	                System.out.println("插入成功");
	            }
	        }catch (Exception e){
	            System.out.println("插入失败");
	            e.printStackTrace();
	        }finally {
	            JDBCUtils.close(null,ps,conn);
	        }
	    }
	    //查询emp表里的tony的所有数据
	    private static void method() {
	        Connection conn  = null;
	        PreparedStatement ps = null ;
	        ResultSet rs = null;
	        try{
	            //注册驱动,获取连接
	            conn  = JDBCUtils.getConnection();
	            //获取传输器
	            String sql="select * from emp where ename = ?";
	            ps = conn.prepareStatement(sql);
	            ps.setString(1,"tony");
	            //解析结果集
	            rs = ps.executeQuery();
	            while(rs.next()){
	                for (int i = 1; i <= 8 ; i++) {
	                    System.out.println(rs.getString(i));
	                }
	            }
	        }catch (Exception e){
	            e.printStackTrace();
	        }finally {//释放资源,保证一定会执行
	           JDBCUtils.close(rs,ps,conn);
	        }
	    }
	}

二,HTML
–1,概述
是超文本标记语言
有固定的结构:head(头部信息) body(主体内容)
HTML里有很多标记, ??? ???
–2,Hbuilderx
–新建项目–创建文件/文件夹–测试(运行)
–3,入门案例




test…

			<meta charset="utf-8"/><!-- 设置网页的编码,避免中文乱码-->
		</head>
		<body bgcolor="greenyellow"> <!-- 主体标签,用来描述网页中真正要展示的数据-->
			你好 <br/> <!-- br换行标签-->
			你好
			你好
			<!-- &nbsp;表示空格 -->
			你&nbsp;&nbsp;&nbsp;&nbsp;好
		</body>
		
		<!-- 复制粘贴ctrl c/v 
				删除 ctrl d
				移动 ctrl ↑ / ↓
		 -->
	</html>

--4,基本标签
	<!DOCTYPE html>
	<html>
		<head>
			<meta charset="utf-8">
			<title>常用标签</title>
		</head>
		<body>
			<!-- 标题标签,一段文字的标题 h1~h6
			       h1字号最大,h6字号最小,而且每个标题标签独占一行
		    -->
			<h1>今日微博热搜排行榜</h1>
			<h2>今日微博热搜排行榜</h2>
			<h3>今日微博热搜排行榜</h3>
			<h4>今日微博热搜排行榜</h4>
			<h5>今日微博热搜排行榜</h5>
			<h6>今日微博热搜排行榜</h6>
			
			<!-- 列表标签,
				ol 定义列表,有序的 
				li 定义列表元素
			-->
			<ol> 
				<li>全国富婆通讯录</li>
				<li>如何套取富婆的芳心</li>
				<li>迪丽热巴还爱我</li>
			</ol>
			
			<!-- 列表标签,
				ul定义列表但是无序
				li 定义列表元素
				type的值可以修饰列表元素前面的符号 空心/实心/方块
			-->
			<ul type="disc">
				<li>全国富婆通讯录</li>
				<li>如何套取富婆的芳心</li>
				<li>迪丽热巴还爱我</li>
			</ul>
			
			<!-- 图片标签,把图片放在HTML网页中
				   标签有两种写法:开始标签/结束标签.     img就是自闭标签
				   每个标签都是可以加属性,src属性::专门用来指定图片的位置
	src的值是图片的路径,想找到和当前网页文件同级的目录,然后再去目录里找
			 -->
			<!-- 加载当前工程里的资源,相对路径,推荐  -->
			<img  src="images/1.jpg" /> 
			<!-- 加载磁盘中的资源,  绝对路径,不推荐 -->
			<img  src="E:\1-work-2020\02-web\3.jpg" />
			<!-- px是像素 -->
			<img  src="images/1.jpg" width="200px" height="500px"/> 
			<img  src="images/1.jpg" width="50%" height="30%"/> 
			
			<!-- 超链接标签 
					必须配置href的属性
					href属性的值,就是要跳转到的页面
					target属性用来指定新页面的打开方式(默认是当前窗口_self)
			-->
			<a href="https://www.w3school.com.cn/" target="_blank">百度一下</a>
			
			<!-- 回到顶部: 锚定 -->
			<br />
			<a name="top">如何套取富婆的欢心</a>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<h5>123124234</h5>
			<!-- 回到name是top的位置 -->
			<a href="#top">回到顶部</a>
			
			<!-- input标签: 文本输入框 
				   可以通过type指定不同类型的输入框
			-->
			<input type="text" />  <!-- 普通的输入框-->
			<input type="number" />  <!-- 数字的输入框-->
			<input type="password" /> <!-- 密码 -->
			<input type="radio"/>男   <!-- 单选框 -->
			<input type="week" />    <!-- 日历 -->
			<input type="checkbox" />杨幂  <!-- 复选框 -->
			<input type="button"  value="点我一下"/> <!-- 按钮-->
			<input type="submit"  value="提交数据"/> <!-- 提交数据-->

			
		</body>
		
	</html>

--5,表格标签
	<!DOCTYPE html>
	<html>
		<head>
			<meta charset="utf-8">
			<title>test123</title>
		</head>
		<body>
			<!-- 表格标签
				table表示向网页中插入一个表格
				由行和列组成的,行用tr表示,列用td表示
				border属性是给表格加边框
				width属性是设置表格宽度
				bgcolor属性是设置表格背景色
				cellspacing属性是设置单元格的间距0
			 -->
			<table border="1px" width="500px" bgcolor="pink" cellspacing="0px">
				<tr>
					<!-- colspan 合并列,2是指合并了2列 -->
					<td colspan="2">11</td>
					
					<td>13</td>
				</tr>
				<tr>
					<td>21</td>
					<td>22</td>
					<td rowspan="2">23</td> <!-- rowspan 合并行-->
				</tr>
				<tr>
					<td>31</td>
					<td>32</td>
					
				</tr>
			</table>
			
			
			<!-- 第二个表 -->
			<table border="1px" bgcolor="lightpink" cellspacing="0" width="40%">
				<tr>
					<th>总页面流量</th> <!-- 自动加粗-->
					<th>共计来访</th>
					<th>会员</th>
					<th>游客</th>
				</tr>
				<tr>
					<td>123</td> 
					<td>345</td> 
					<td>456</td> 
					<td>789</td> 
				</tr>
				<tr>
					<td>123</td> 
					<td>345</td> 
					<td>456</td> 
					<td>789</td> 
				</tr>
				<tr>
					<td>平均每人浏览</td> 
					<td colspan="3">345</td>  <!-- colspan合并列-->
				</tr>
			</table>
			
			<!-- 其他标签 div  p  span -->
			<!-- div是块级元素,会自动换行 -->
			<div>123</div>
			<div>123</div>
			<div>123</div>
			
			<!-- p标签表示段落,会自动加空行 -->
			<p>hello</p>
			<p>hello</p>
			<p>hello</p>
			
			<!-- span是内联元素,多个span在同一行,不换行 -->
			<span>java</span><br />
			<span>java</span>
			
		</body>	
	</html>

--6,表单标签
	<!DOCTYPE html>
	<html>
		<head>
			<meta charset="utf-8">
			<title>表单标签</title>
		</head>
		<body>
			<!-- 通过form标签,实现把数据提交给服务器 -->
			<form>
				<h1>注册表单</h1>
				<table border="1px" cellspacing="0px" width="350px" bgcolor="gainsboro">
					<tr>
						<td>用户名:</td>
						<td>
							<input type="text" />
						</td>
					</tr>
					<tr>
						<td>密码:</td>
						<td>
							<input type="password" /> <!-- 自动加密处理 -->
						</td>
					</tr>
					<tr>
						<td>确认密码:</td>
						<td>
							<input type="password" /> <!-- 自动加密处理 -->
						</td>
					</tr>
					<tr>
						<td>昵称:</td>
						<td>
							<input type="text" />
						</td>
					</tr>
					<tr>
						<td>邮箱:</td>
						<td>
							<input type="email" /> 
						</td>
					</tr>
					<tr>
						<td>性别:</td>
						<td>
							<input type="radio" /> 男
							<input type="radio" /> 女
						</td>
					</tr>
					<tr>
						<td>爱好:</td>
						<td>
							<input type="checkbox" />篮球
							<input type="checkbox" />足球
							<input type="checkbox" />羽毛球
						</td>
					</tr>
					
					
					<!-- TODO 自己完成 剩下的行 -->
					
					
					
				</table>
			</form>
		</body>
	</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、JDBC(Java Database Connection):java连接数据库统一接口API,底层主要通过直接的JDBC驱动和 JDBC-ODBC桥驱动实现与数据库的连接。 1>.JDBC驱动程序类型: <1>.JDBC-ODBC桥加ODBC驱动程序:需要ODBC驱动,适合于企业网或三层结构应用程序 <2>.本地API:需要驱动程序的二进制代码支持 <3>.JDBC网络纯java驱动程序:将JDBC转换为与DBMS无关的网络协议,又被某服务器转换为一种DBMS 协议,以操作各种数据库 <4>.本地协议纯java驱动程序:将JDBC调用直接转换成JDBC所使用的网络协议 2、JDBC操作基本流程: 1>.导入驱动:实例化时自动向DriverManager注册(DriverManager.registerDriver()) <1>.Class.forName(driver) <2>.Class.forName(driver).newInstance() <3>.new driver() 2>.取得数据库连接(Connect to the DataBase) <1>.用DriverManager取数据库连接 Connection cn = DriverManager.getConnection(url,uid,pwd); <2>.用jndi(java的命名和目录服务)方式:多用于jsp Context ctx = (Context) new InitialContext().lookup("java:comp/env"); DataSource ds = (DataSource) ctx.lookup(jndi); Connection cn = ds.getConnection(); 3>.执行sql语句(Execute the SQL) <1>.用Statement来执行sql语句 Statement sm = cn.createStatement(); sm.executeQuery(sql); // 执行数据查询语句(select) sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等) <2>.用PreparedStatement来执行sql语句 String sql = "insert into user (id,name) values (?,?)"; PreparedStatement ps = cn.prepareStatement(sql); ps.setInt(1,xxx); ps.setString(2,xxx); ... ResultSet rs = ps.executeQuery(); // 查询 int c = ps.executeUpdate(); // 更新 4>.处理执行结果: <1>.查询语句,返回记录集ResultSet <2>.更新语句,返回数字,表示该更新影响的记录数 <3>.ResultSet的方法:while(re.next()) next(),将游标往后移动一行,如果成功返回true;否则返回false getInt("id")或getSting("name"),返回当前游标下某个字段的值 5>.释放数据库连接 rs.close(); ps.close(); /stat.close(); con.close(); 3、创建可滚动、更新的记录集 1>.创建Statement时指定参数:该Statement取得的ResultSet就是可滚动的 Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE, ResultSet.CONCUR_READ_ONLY); 2>.创建PreparedStatement时指定参数 PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); rs.absolute(9000);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值