C#:向SqlServer数据库中插入imange类型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text; namespace Common
{
public class ConvertData
{
/// <summary>
/// 构造函数
/// </summary>
public ConvertData()
{ } /// <summary>
/// 将byte[]数组转换为double[]数组
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
public double[] BytesToDoubles(byte[] b)
{
// Initialize unmanged memory to hold the array.
int size = Marshal.SizeOf(b[0]) * b.Length; IntPtr pnt = Marshal.AllocHGlobal(size); try
{
// Copy the array to unmanaged memory.
Marshal.Copy(b, 0, pnt, b.Length); // Copy the unmanaged array back to another managed array.
double[] managedArray2 = new double[b.Length / 8]; Marshal.Copy(pnt, managedArray2, 0, b.Length / 8);
return managedArray2;
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
} } /// <summary>
/// 获取内存中double[],并转换为String字符串
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
public string DoublesToString(double[] doubleArray)
{
string values = ""; for (int i = 0; i < doubleArray.Length; i++)
{
values += doubleArray[i] + ",";
} return values;
} /// <summary>
/// 获取内存中double[],并转换为String字符串
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
public string BytesToString(byte[] b)
{
double[] doubleArray = BytesToDoubles(b); return DoublesToString(doubleArray); } /// <summary>
/// 获取内存中double[],并转换为String字符串
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
public string GetByteToDouble(byte[] b)
{
// Initialize unmanged memory to hold the array.
int size = Marshal.SizeOf(b[0]) * b.Length; IntPtr pnt = Marshal.AllocHGlobal(size);
string values = "";
try
{
// Copy the array to unmanaged memory.
Marshal.Copy(b, 0, pnt, b.Length); // Copy the unmanaged array back to another managed array.
double[] managedArray2 = new double[b.Length / 8]; Marshal.Copy(pnt, managedArray2, 0, b.Length / 8); for (int i = 0; i < managedArray2.Length; i++)
{
values += managedArray2[i] + ",";
}
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
} return values;
} /// <summary>
/// 将double[]数组转换为byte[]数组
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
public byte[] DoublesToBytes(double[] d)
{
int size = Marshal.SizeOf(d[0]) * d.Length;
IntPtr pnt = Marshal.AllocHGlobal(size);
try
{
// Copy the array to unmanaged memory.
Marshal.Copy(d, 0, pnt, d.Length); // Copy the unmanaged array back to another managed array.
byte[] managedArray2 = new byte[d.Length * 8]; Marshal.Copy(pnt, managedArray2, 0, d.Length * 8);
return managedArray2;
}
finally
{
// Free the unmanaged memory.
Marshal.FreeHGlobal(pnt);
}
} }
}
调用:
public int InsertWSWSUH(string wscd, int uintv, int udrp, string unitnm, int usteps, double[] uhdata, double mfp,/*datetime,*/int nsteps) //// <param name="datetime">时间戳</param>
{ string sqlStr = "Insert into [HyModelDB_new].[dbo].[FFM_WSWSUH_B] ([WSCD],[UINTV],[UDRP],[UNITNM] ,[USTEPS] ,[UHDATA],[MFP],[DATETM],[NSTEPS]) values ('" + wscd + "'," + uintv + "," + udrp + ",'" + unitnm + "'," + usteps + "," + "@unitData" + "," + mfp + "," + "@dateTime" + "," + nsteps + ")"; SqlParameter[] parameters = {
new SqlParameter("@unitData", SqlDbType.Image),
new SqlParameter("@dateTime", SqlDbType.DateTime)}; parameters[0].Value = ConvertData.DoublesToBytes(uhdata);
parameters[1].Value = DateTime.Now.ToString("yyyy-MM-dd");
return db.ExecuteSql(sqlStr);
}
参考代码:
/// <summary>
/// 增加一条数据
/// </summary>
public int Add(OA.Model.InformationOfDoc model)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("insert into InformationOfDoc(");
strSql.Append("DocName,DocType,RwID,RWType,RWClass,Execution,DocBLOB,DocAttribute,CreateYMD,Remark)");
strSql.Append(" values (");
strSql.Append("@DocName,@DocType,@RwID,@RWType,@RWClass,@Execution,@DocBLOB,@DocAttribute,@CreateYMD,@Remark)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@DocName", SqlDbType.VarChar,40),
new SqlParameter("@DocType", SqlDbType.VarChar,100),
new SqlParameter("@RwID", SqlDbType.VarChar,18),
new SqlParameter("@RWType", SqlDbType.Char,10),
new SqlParameter("@RWClass", SqlDbType.Char,4),
new SqlParameter("@Execution", SqlDbType.Char,6),
new SqlParameter("@DocBLOB", SqlDbType.Image),
new SqlParameter("@DocAttribute", SqlDbType.Char,6),
new SqlParameter("@CreateYMD", SqlDbType.Date,3),
new SqlParameter("@Remark", SqlDbType.VarChar,200)};
parameters[0].Value = model.DocName;
parameters[1].Value = model.DocType;
parameters[2].Value = model.RwID;
parameters[3].Value = model.RWType;
parameters[4].Value = model.RWClass;
parameters[5].Value = model.Execution;
parameters[6].Value = model.DocBLOB;
parameters[7].Value = model.DocAttribute;
parameters[8].Value = model.CreateYMD;
parameters[9].Value = model.Remark; object obj = DbHelperSQL.GetSingle(strSql.ToString(),parameters);
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
C#:向SqlServer数据库中插入imange类型的更多相关文章
- 读写SQLServer数据库中的image类型数据(简单)
		
1.将double类型的数据存储于image类型的变量中: (1). char *CManualForecastResultBll::DoubleArray2Binary(std::vector< ...
 - 向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))
		
需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字 ...
 - Sqlserver数据库中的临时表详解
		
临时表在Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考. 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除.临时表有两种类 ...
 - 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
		
批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...
 - 向mysql中插入Date类型的数据
		
先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...
 - java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间
		
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...
 - Oracle数据库中插入日期型数据(to_date的用法)(转载)
		
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
 - 通过mybatis向数据库中插入日期数据
		
遇到的问题: 通过mybatis向数据库中插入日期格式数据,发现只有年月日, 没有小时分钟和秒 当你想在实体类中使用java.util.Date类型,而且还想在数据库中保存时分秒时, 解决办法: 你可 ...
 - SQL语句往Oracle数据库中插入日期型数据(to_date的用法)
		
Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下: --SQL语句往Oracle数据库中插入日期型数据 ...
 
随机推荐
- JS 判断PC、android、ios、微信浏览器
			
1.通过js userAgent来判断 <h1>判断访问此链接的操作系统</h1> <script> var Agents = new Array("An ...
 - CentOS 6.9/7通过yum安装指定版本的PostgreSQL
			
PostgreSQL(10+) 一.安装PostgreSQL // 安装EPEL源 # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel- ...
 - Tiny microcontroller hosts dual dc/dc-boost converters
			
Batteries are the typical power sources for portable-system applications, and it is not unusual thes ...
 - FreeRTOS Memory Management ( IAR )
			
http://www.freertos.org/a00111.html The RTOS kernel allocates RAM each time a task, queue, mutex, so ...
 - [转].net reactor 学习系列(四)---.net reactor应用场景
			
前面已经学习了.net reactor一些基础知识,现在准备学习下实际的应用场景,只是简单的保护和许可证发放场景.如果想应用更高级的场景比如自动化程序许可证的发放及自定义客户端的过期提示等等就需要自己 ...
 - 使用tortoisegit访问git@oschina
			
转自:http://www.3lian.com/edu/2014/01-03/121350.html 首先,如果你想使用git@oschina ,你的电脑上必须先有git工具:你可以从这里获取谷歌提供 ...
 - Redis主从集群以及Sentinel的配置
			
安装完redis后,修改几个redis从节点的配置文件redis.conf,主要是加入主节点位置 slaveof 另外需要修改的地方包括,这样允许其他的从节点连入 bind 0.0.0.0 prote ...
 - 网页采集(通过HtmlAgilityPack+XPath)
			
有HtmlAgilityPack这个类库可以更方便地对HTML内容进行分析和提取.因此今天特别学习和实践了一下HtmlAgilityPack和XPath,并作下笔记. 1.下载HtmlAgilityP ...
 - 使用百度地图API实现轨迹回放
			
调用百度地图API实现路线的轨迹回放功能其实很简单,只要搞懂以下几点即可: 1.需要用Polyline方法先绘制好路线图 2.用Marker添加标注点 3.关键一步,通过结合定时器,使用Marker创 ...
 - Android -- Sqlite事务
			
这也是通过Android Juint来实现的. 基于上一次的工程继续,上一次工程传送门:<Android–Android Juint 与 Sqlite> http://www.cnblog ...