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类型的更多相关文章

  1. 读写SQLServer数据库中的image类型数据(简单)

    1.将double类型的数据存储于image类型的变量中: (1). char *CManualForecastResultBll::DoubleArray2Binary(std::vector< ...

  2. 向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))

    需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的.这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败. 需要通过TO_DATE('字 ...

  3. Sqlserver数据库中的临时表详解

    临时表在Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考. 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除.临时表有两种类 ...

  4. 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor

    批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...

  5. 向mysql中插入Date类型的数据

    先看数据库表的定义 date字段为sql.date类型.我要向其中插入指定的日期和当前日期. 一.插入当前日期 思路:先获取当前系统,在将当前系统时间转换成sql类型的时间,然后插入数据库.代码如下 ...

  6. java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

    java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...

  7. Oracle数据库中插入日期型数据(to_date的用法)(转载)

    往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYY ...

  8. 通过mybatis向数据库中插入日期数据

    遇到的问题: 通过mybatis向数据库中插入日期格式数据,发现只有年月日, 没有小时分钟和秒 当你想在实体类中使用java.util.Date类型,而且还想在数据库中保存时分秒时, 解决办法: 你可 ...

  9. SQL语句往Oracle数据库中插入日期型数据(to_date的用法)

    Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下: --SQL语句往Oracle数据库中插入日期型数据 ...

随机推荐

  1. Tasker, Android系统增强神器, 变量汇总

    http://tasker.dinglisch.net/userguide_summary.html#variables.html http://tasker.dinglisch.net/usergu ...

  2. LT1072 -- Wide-range voltage regulator automatically selects operating mode

    The circuit in Figure 1 delivers programming voltages to an EEPROM under the control of an external ...

  3. linux 多线程查看工具

    参考: http://www.oschina.net/translate/command-line-tools-to-monitor-linux-performance?cmp&p=1 htt ...

  4. Linux系统下查看目录大小

    转载:http://blog.csdn.net/iamlaosong/article/details/7085178 我们有个系统每天要下载数据,为了检查下载数据是否正常,需要查看下载数据目录大小,因 ...

  5. 关于String 后面跟省略号。。。

    今天阅读MonkeyRunner源码的时候发现下面一段: private String shell(String... args) { StringBuilder cmd = new StringBu ...

  6. 批量删除linux的文件;find方法批量删除文件;find查找某时间段内的所有文件

    1.如图所示,有大量文件夹,想批量删除它们 2.使用命令 find . -maxdepth 1  -regex ".*ws.*" 可以批量找到他们.maxdepth值为1表示只在当 ...

  7. Linux系统getopt使用示例

    #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <stdint.h&g ...

  8. c# 使用api函数 ShowWindowAsync 控制窗体

    1.需要匯入 System.Runtime.InteropServices 命名空間 2.宣告 ShowWindowAsync 函數 [DllImport("user32.dll" ...

  9. 使用libsvm对MNIST数据集进行实验---浅显易懂!

    原文:http://blog.csdn.net/arthur503/article/details/19974057 在学SVM中的实验环节,老师介绍了libsvm的使用.当时看完之后感觉简单的说不出 ...

  10. 关于使用jquery时,ie8下提示对象不支持的属性或方法的解决办法

    转自:http://wapapp.baidu.com/auoong/item/538790fcbe87c834d7ff8cde 首先这个问题的前提是已经排除了常见的这个问题.下面说一种今天我碰到的一种 ...