-
2018-09-25 15:53:43
数据库中的更新通常是由客观世界的所发生的事件引起的.为保证数据库内容一致,要么完全成功,要么完全失败。
- 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
- 事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。 ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。
更多相关内容 -
数据库语句结束符
2019-07-13 22:10:47";"与"\g":效果一样,都是字段在上排横着,下面跟对应的数据 "\G":字段在左侧竖着,数据在右侧横着";"与"\g":效果一样,都是字段在上排横着,下面跟对应的数据
"\G":字段在左侧竖着,数据在右侧横着 -
javaweb实现任意图片上传数据库中,并且显示在浏览器中
2020-08-25 20:04:37打开电脑硬盘,随机获取文件夹中的图片,并把图片保存到服务器中的临时文件夹中,在从临时文件夹中把图片路径保存到数据库中!本文采用的是MYSql数据库,Myeclipse工具。 二、项目基本结构: 三、jar包: 四、代码...一、
最近复习了下以前的知识,其中包括图片上传数据库,并显示在浏览器中!
原理:
打开电脑硬盘,随机获取文件夹中的图片,并把图片保存到服务器中的临时文件夹中,在从临时文件夹中把图片路径保存到数据库中!本文采用的是MYSql数据库,Myeclipse工具。二、项目基本结构:
三、jar包:
四、代码块:
1、数据库连接类:
package com.db; import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { private static final String Driver = "com.mysql.jdbc.Driver"; private static final String url="jdbc:mysql://localhost:3306/uploading"; private static final String user = "root"; private static final String password = "123456"; private Connection conn = null; public DBConnection() throws Exception { // 进行数据库连接 try { Class.forName(Driver); // 用反射加载数据库驱动 this.conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { throw e; // 抛出异常 } } public Connection getConnection() { return this.conn; // 取得数据库的连接 } public void close() throws Exception { // 关闭数据库 if (this.conn != null) { try { this.conn.close(); // 数据库关闭 } catch (Exception e) { throw e; } } } }
2、实体类bean:
package com.pojo; public class User { private int id; private String name; private String imgurl; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getImgurl() { return imgurl; } public void setImgurl(String imgurl) { this.imgurl = imgurl; } }
3、数据业务处理类:
package com.service; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.db.DBConnection; import com.pojo.User; public class Userdao { private Connection conn=null;//数据库连接对象 private PreparedStatement pstmt=null;//数据库操作对象 private DBConnection db=null; public Userdao() throws Exception { this.db=new DBConnection(); this.conn=db.getConnection(); } //添加名称和图片 public boolean addUser(User user) throws Exception{ boolean flag=false; String sql="insert into uploading(name,imgurl) values(?,?)"; this.pstmt=this.conn.prepareStatement(sql); this.pstmt.setString(1,user.getName()); this.pstmt.setString(2,user.getImgurl()); if(this.pstmt.executeUpdate()>0){ flag=true; } this.pstmt.close(); return flag; } //遍历 public List<User> findAll() throws Exception{ List<User> list =new ArrayList<User>(); String sql="select * from uploading"; this.pstmt=this.conn.prepareStatement(sql); ResultSet rs=this.pstmt.executeQuery(); while(rs.next()){ User u=new User(); u.setId(rs.getInt(1)); u.setName(rs.getString(2)); u.setImgurl(rs.getString(3)); list.add(u); } this.pstmt.close(); return list; } }
4、数据库操作类(Servlet)
package com.servlet; import java.io.File; import java.io.IOException; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.pojo.User; import com.service.Userdao; @WebServlet(name="Inertm",urlPatterns="/Inertm") public class Inertm extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("方法开始执行"); resp.setContentType("application/json;charset=utf-8"); req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); String name=null; // 验证请求是否满足要求(post 请求 / enctype 是否以multipart打头 boolean isMultipart = ServletFileUpload.isMultipartContent(req); // 如果不满足要求就立即结束对该请求的处理 if (!isMultipart) { return; } try { // FileItem 是表单中的每一个元素的封装 // 创建一个 FileItem 的工厂类 FileItemFactory factory = new DiskFileItemFactory(); // 创建一个文件上传处理器(装饰设计模式) ServletFileUpload upload = new ServletFileUpload(factory); // 解析请求 List<FileItem> items = upload.parseRequest(req); System.out.println(items); for (FileItem item : items) { // 判断文件类型 if (item.isFormField()) { // 文本类型 String filename = item.getFieldName(); if (filename.equals("user")) { name = item.getString("UTF-8"); System.out.println(name); } } else { // 文件类型 // 获取文件后缀名 String imgtype = item.getName().substring(item.getName().lastIndexOf(".")); // 给文件重新命名防止重复 String imgName = UUID.randomUUID() + imgtype; System.out.println(); String path="D:\\JAVA_2\\Combat\\foryn\\WebRoot\\upload"; // 将上传的文件保存到服务器 item.write(new File(path, imgName)); // 把服务器中的路径添加到数据库中 String sqlPath=null; sqlPath = "upload/" + imgName; System.out.println("访问路径:" + sqlPath); // 将路径保存到数据库 User u=new User(); u.setName(name); u.setImgurl(sqlPath); Userdao dao=new Userdao(); boolean flag=dao.addUser(u); if(flag){ resp.getWriter().write("ok");; }else{ resp.getWriter().write("on");; } } } } catch (Exception e) { e.printStackTrace(); } } }
5、图片上传提交页(html)
<!DOCTYPE html> <html> <head> <title>insert.html</title> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <meta name="content-type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-type" content="text/html" charset="utf-8"/> <script type="text/javascript" src="Jquery/jquery.min.js"></script> </head> <body> <form action="Inertm" method="post" enctype="multipart/form-data"> 名称:<input type="text" id="user" name="user"><br> 图片:<input class="fileInput" id="file" type="file" name="image" /> <input type="submit" value="提交" onclick="return upload()"/> </form> <!-- <script type="text/javascript"> function upload(){ var username = $("#user").val(); var filename = $("#file").val(); var url = "http://localhost:8080/foryn/Inertm"; $.ajax({ url:url, type:"post", dataType:"json", data:{"username":username,"filename":filename}, success:function(data){ if(data.success){ alert("添加成功"); } } }); } </script> --> </body> </html>
6、显示页面(jsp)
<%@ page language="java" import="java.util.*,com.service.Userdao,com.pojo.User" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% Userdao dao = new Userdao(); List<User> list=dao.findAll(); %> <table border="1"> <tr> <td>名称</td> <td>图片</td> </tr> <% for(User u:list){ %> <tr> <td><%=u.getName() %></td> <td><img style="width:50px;height:50px" src="<%=u.getImgurl()%>"></img></td> </tr> <% }%> </table> </body> </html>
-
根据查询条件开始时间、结束时间查询数据库,并且数据库中也包含开始时间、结束时间字段
2018-03-27 15:44:13根据开始时间和结束时间查询数据库一段时间内的数据,并且数据库也有两个字段,一个开始时间和一个结束时间。要根据数据库的时间字段来查询。 例如: 数据库字段:start_time,end_time 查询条件:startTime、...需求:
根据开始时间和结束时间查询数据库一段时间内的数据,并且数据库也有两个字段,一个开始时间和一个结束时间。要根据数据库的时间字段来查询。例如:
数据库字段:start_time,end_time
查询条件:startTime、endTime有三种情况
- 只输入开始时间
end_time >= startTime
- 只输入结束时间
end_time <= endTime
- 输入开始时间和结束时间
start_time <= endTime and end_time >= startTime
-
数据库中的事务
2018-08-05 16:46:27定义:事务就是一个对数据库操作的序列,是一个不可分割的工作单位,要不这个序列里面的操作全部执行,要不全部不执行。 特性:原子性 (Atomicity) 持久性(Durability) 一致性(Consistency) 隔离性... -
数据库中的集合运算
2019-05-29 19:37:201.数据库中的集合运算主要有联合,完全联合,相交,相减 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All:对两个结果集进行并集操作,包括重复行,不进行排序; Intersect:对... -
在PHP中实现将数据库中的数据在页面表格中呈现
2018-11-23 10:16:211.连接数据库,执行sql查询语句; 2.检测数据库是否连接成功,sql语句是否执行成功; 3.sql语句成功执行后获得mysqli_result对象(只有执行增、删、改查询成功后才会返回mysqli_result对象); 4.读取mysqli_... -
MYSQL数据库命令行分号不能结束语句的问题解决办法
2020-05-27 15:00:52MYSQL数据库命令行分号不能结束语句的问题解决办法 加一个 ‘;(单引号和分号),即可执行sql语句。有可能输一次不管用,多输入几次 select 查询列表 from 表名 -
按下列表结构,利用SQL语句在mydb数据库中创建topic表。
2020-01-09 11:55:47按下列表结构,利用SQL语句在mydb数据库中创建topic表。 字段名 数据类型 备注 id INT 专题编号 title VARCHAR(255) 专题名称 intro VARCHAR(255) 专题介绍 start_time INT(11) 专题开始时间 end_time INT(11) 专题... -
数据库中了勒索病毒,怎么办?
2019-05-21 17:28:02一、SQL Server SQL Server 是一个关系数据库管理系统。...在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注... -
数据库中表主键ID自增设置
2021-11-09 14:57:21我们在项目中遇到oracle数据库需要进行对表增加自增字段,简单的分为两步:创建序列和创建触发器,详细步骤如下: 1、我们先创建一张测试表,进行测试: 2、创建序列,如下序列从1开始每次增加1最大为999999999: ... -
实时数据库与时序数据库
2020-11-18 10:40:39在工业大数据数据库存储领域,除了传统的关系型数据库和分布式数据库以外,还有一种类型的数据库是非常常用,而且是非常有必要的,就是实时数据库,以及时序数据库。 但是,大家可能会有疑问,都是专门处理时序数据... -
【数据库】数据库课程设计一一疫苗接种数据库
2022-02-06 19:59:51文章目录:一、数据库题目二、需求分析1、设计背景:2、设计目的:3、数据库相关信息4、三次主要的阶段三、概念结构设计四、逻辑结构设计五、物理结构设计六、数据库实施1、数据库设计语言选择2、创建数据库以及导入... -
数据库中事务是什么意思?
2019-05-07 09:45:55我们知道,数据库是一个面向多用户的共享机制,因此数据库管理系统应当具备并发控制和封锁机制,保证数据库系统的正常运行。但是当多个用户访问数据库的时候,如果每一个用户程序一个一个的串行执行,则每一时刻只有... -
数据库中事务的特性
2019-05-12 23:00:37事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 2 .一致性 事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结... -
在MySQL中如何用SQL命令创建数据库及数据表
2021-01-16 22:45:06现在,给大家讲解,如何用SQL命令在MySQL中创建一个数据库及数据表。 在学习前,我们首先要了解,SQL命令是什么? SQL 结构化查询语言,专门用来操作关系型数据库 知道了SQL命令是什么,我们还要知道)SQL命令... -
数据库中redo-undo的介绍
2018-11-13 21:23:26某次操作,我们取了数据库某表格中的数据,这个数据会在内存中缓存一些时间。对这个数据的修改在开始时候也只是修改在内存中的内容。当db buffer已满或者遇到其他的情况,这些数据会写入data file。 undo,redo 日志... -
关系数据库——数据库恢复
2019-12-02 14:04:14实现技术 恢复操作的基本原理:冗余 ...转储是指DBA将整个数据库复制到其他存储介质上保存起来的过程,备用的数据称为后备副本或后援副本 如何使用 数据库遭到破坏后可以将后备副本重新装入 ... -
全国计算机等级考试三级数据库技术(十)
2022-03-18 22:29:59◆在考试中一般情况下会出现在选择题、填空题部分。 ◆常考知识点有: 1.熟悉数据库运行维护基本工作 2.理解运行状态监控与分析 3.熟悉数据库存储空间管理 4.掌握数据库的模式调整与优化、存储优化、查询优化 -
mysql数据库删除一行数据
2021-01-19 10:09:55陈 2014-02-24 608浏览量 mysql 数据导入导出 数据的mysql命令导出,导入: 在数据库命令行中只导出数据,不到处数据结构的时候出现secure_file_priv option so it cannot execute this statement的错误。... -
数据库事务详解
2021-02-24 17:15:40提示:事务主要是为了保证复杂数据库操作数据的一致性,尤其是在并发访问数据时。MySQL事务主要用于处理操作量大,复杂度高的数据。 一、什么是数据库事务? 从根本上理解MySQL事务,是指作为单个逻辑工作单元执行... -
HarmonyOS数据库之关系型数据库
2021-07-15 11:43:40已经鸽了很久了,今天也准备了点新东西来进行发布,在搞Android的时候我们都知道有SQlite数据库以及AndroidX之后的ROOM数据库,一些轻量级的数据就可以存储在数据库里面;HarmonyOS同样提供了数据库的相关操作以及... -
关系型数据库的发展历史
2019-03-12 23:15:03数据库发展史 信息系统产生了海量的数据,有数据必须要有数据的存放位置, 无库时代 :没有专门的数据库,数据大多以文件形式存放 层次状数据库 :使用层次状模型进行数据库设计和存放 网状数据库 :使用网状... -
达梦数据库中的数据查询和函数使用
2021-01-03 15:03:57这里写自定义目录标题达梦数据库中的数据查询和函数使用 达梦数据库中的数据查询和函数使用 1. 数据查询 1.1 查询基础语法结构 Select 列 1,...,列 n from 表 [where 条件] [group by 分组列 1,...,列 n] [having ... -
数据库事务处理
2020-06-02 22:55:571、简介 ...我们可以这样理解数据库事物:对数据库所做的一系列修改,在修改过程中,暂时不写入数据库,而是缓存起来,用户在自己的终端可以预览变化,直到全部修改完成,并经过检查确认无误后,... -
Linux服务器中登录oracle数据库
2021-12-07 17:34:28前言: 工作中遇见了在oracle中执行一个sql执行时间过长需要强制关闭session的情况,这个时候就需要登录Linux的服务器中杀掉这个session。 方法步骤: su - oracle --打开oracle,注意'-'符号的前后空格 sqlplus / ... -
如何在SQL Server中附加Pubs数据库
2018-11-26 16:47:56在本教程中,我将解释如何在SQL Server中附加Pubs数据库 。每个其他数据库的过程都是相同的。您需要将Pubs MDF和LDF文件附加到SQL Server。 请注意,Northwind和Pubs数据库都与下载文件一起提供。 什么是Pubs... -
MySQL创建数据库和创建数据表
2019-10-20 23:44:40MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。 在这之前,需要先安装好 MySQL ,然后创建好数据库、数据表、操作用户。 一、数据库操作语言 数据库在操作时,需要使用专门的数据库... -
数据库总结(350个数据库,14个分类)
2019-06-24 21:37:13文章目录1、简述2、数据库排行3、总体分类4、对比4.1 关系型数据库遵循ACID规则4.1.1、A (Atomicity) 原子性4.1.2、C (Consistency) 一致性4.1.3、I (Isolation) 独立性4.1.4、D (Durability) 持久性4.2、为什么使用... -
数据库的基本操作
2021-04-07 23:58:45在打开对象资源管理器后,点击已经连接的数据库引擎节点,在数据库节点或某用户数据库节点上单击鼠标右键,在弹出的快捷菜单中,选中“新建数据库”菜单项,会弹出如下对话框 在这里可以确定数据库名称、所有者、...
收藏数
781,093
精华内容
312,437