根据数据库帮助类采用事务插入图片到sql server数据库中
我们定义数据库为image类型,然后读取图片为字符流,再保存到数据库中,首先我们定义一个读取图片的公共类,此公共类以后会用到,所以可以建立相应的帮助类
public static byte[] ReadFile(string sPath)
{
//Initialize byte array with a null value initially.
byte[] data = null; //Use FileInfo object to get file size.
FileInfo fInfo = new FileInfo(sPath);
long numBytes = fInfo.Length; //Open FileStream to read file
FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read); //Use BinaryReader to read file stream into byte array.
BinaryReader br = new BinaryReader(fStream); //When you use BinaryReader, you need to supply number of bytes to read from file.
//In this case we want to read entire file. So supplying total number of bytes.
data = br.ReadBytes((int)numBytes);
return data;
}
再定义一下插入图片的语句类
/// <summary>
/// 保存图片数据库语句
/// WZW
/// 2018-10-09 17:11
/// </summary>
/// <param name="ImageData"></param>
/// <param name="BUitrasoundID"></param>
/// <param name="currentid"></param>
/// <param name="parameter"></param>
/// <returns></returns>
private StringBuilder SaveImg(byte[] ImageData, string BUitrasoundID,int currentid,out SqlParameter parameter)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into imagetabel(");
strSql.Append("ImageData,Time,Type,ImageType,ReferenceID)");
strSql.Append(" values (");
strSql.Append("@ImageData"+currentid+",'" + System.DateTime.Now + "',1,0,@BSID) ");
parameter = new SqlParameter("@ImageData" + currentid, ImageData);
return strSql; }
主体代码如下
StringBuilder strSql = new StringBuilder();
Random random=new Random();
SqlCommand command = new SqlCommand();
SqlParameter[] parameters = new SqlParameter[3];
strSql.Append("set XACT_ABORT ON ");
strSql.Append(" begin tran t1 ");
StringBuilder strSql2 = new StringBuilder();
strSql.Append(" declare @BSID int ");
strSql2.Append("insert into table(");
strSql2.Append("ID,CheckResult,TestTime,Result,Picture,Type)");
strSql2.Append(" values (");
strSql2.Append("'" + ID + "','" +CheckResult + "','" + TestTime + "','" + FeaturesResult + "','" +BUltrasoundPicture + "','" + BUitrasoundType + "') ");
strSql2.Append(";select @BSID=@@IDENTITY ");
strSql.Append(strSql2);
if (ImageData != null)
{
SqlParameter parameter = null;
strSql.Append(SaveImg(ImageData," ",1, out parameter));
parameters[0] = parameter;
}
if (ImageData2 != null)
{
SqlParameter parameter = null;
strSql.Append(SaveImg(ImageData2, " ",2, out parameter));
parameters[1] = parameter;
}
if (ImageData3 != null)
{
SqlParameter parameter = null;
strSql.Append(SaveImg(ImageData3," ",3, out parameter));
parameters[2] = parameter;
}
strSql.Append("commit tran t1");
return Convert.ToInt32(SqlHelper.ExecuteNonQuery(SqlHelper.connectionString, CommandType.Text, strSql.ToString(),parameters));
其中图片表的关联id关联主表插入后的id,由语句select @BSID=@@IDENTITY得到,当主键自增时此语句才生效。
根据数据库帮助类采用事务插入图片到sql server数据库中的更多相关文章
- MFC存储图片到SQL Server数据库
第一步:建立数据库表,比如:id char,pic image. 第二步:建立MFC单文档应用程序,再添加类CMyRecordset,基类选择CRecordset,导入数据库的刚建立的表. 第三步:在 ...
- C# 图片存入SQL Server数据库
OpenFileDialog openfiledialog1 = new OpenFileDialog(); if (openfiledialog1.ShowDialog() == DialogRes ...
- 2017-3-17 SQL server 数据库 视图,事务,备份还原,分离附加
1.视图:只能查看,不能增删改不能有重复列 create view 名字as查询语句 2.事务:保证流程的完整执行 begin tran --开始事务监控 被监控的代码 ... ...if @@ERR ...
- SQL Server 数据库分离与附加
一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...
- SQL Server 2012中快速插入批量数据的示例及疑惑
SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...
- JDBC连接sql server数据库的详细步骤和代码
JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...
- 用分离、附加的方式实现sql server数据库的备份和还原
一.数据库分离.附加的说明 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用 ...
- Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库
导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...
- SQL Server 数据库分离与附加(图文教程)
from:http://www.jb51.net/article/36624.htm 一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复 ...
随机推荐
- 正则表达式-Csharp
原文:正则表达式-Csharp 学习笔记:正则表达式 一. 正则表达式 正则表达式(Regex)是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现. 一个正则表达式就是由普通的字符及特殊 ...
- RedHat 7.3+ORACLE 12c RAC 使用udev绑定磁盘
在RedHat 7中,很多命令发生了改变,其中使用udev对磁盘绑定的命令也发生了变更,不再使用start_udev,而是改为了udevadm,下面具体介绍如何使用udev对磁盘进行绑定,这里对6和7 ...
- ML:机器学习中常用的Octave语句
coursera上吴恩达的机器学习课程使用Octave/Matlab实现算法,有必要知道Octave简单的语句.最重要的:在遇到不会的语句,使用'''help '''或者'''doc '''查看官方文 ...
- 原创powershell脚本:通过远程桌面3389黑名单,阻止黑客ip
远程桌面 3389 ban ip 防火墙 rdp 通过远程桌面3389黑名单,阻止黑客ip.这是一个常见的需求.但我搜遍了谷歌也找不到成品脚本.想做搬运工却做不成,只能自己费尽写.下载备用吧,估计 ...
- 学习Java,容易被你忽略的小细节(3)
在<学习Java,容易被你忽略的小细节(2)>中我们已经深入讨论过String类中equals()方法的使用,在本文中我们将进一步讨论equals()方法在其他境况下的使用方法. 首先,我 ...
- Varnish动静分离配置示例
动静分离 [root@varnish ~]# vim /etc/varnish/default.vclvcl 4.0;backend web { .host = "192.168.30.15 ...
- pc微信浏览器打开页面显示空白,其他浏览器正常
pc微信浏览器不兼容es6的语法糖.
- Codeforces Round #568 (Div. 2)B
B. Email from Polycarp 题目链接:http://codeforces.com/contest/1185/problem/B 题目: Methodius received an e ...
- Programming In Lua 第六章
1, 2, 3,
- 09、MySQL—列属性
列属性又称之为字段属性,在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长 1.Null属性 NULL属性:代表字段为空 如果对应的值为YES表示该字段可以为NULL 注意 ...