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);

			}

		}

 

你可能感兴趣的:(sqlserver)