C#:向SqlServer数据库中插入imange类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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);
            }
        }
 
    }
}

 

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
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);
       }

 

参考代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/// <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类型,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。