zoukankan      html  css  js  c++  java
  • c# mysql blob数据类型

    1.采用stream流形式写入:

        #region 数据流转换成blob类型数据写入数据库
            static public bool StreamToBlob(ref Stream stream, OdbcConnection conn, string sTable, string sBlobField, string sIDName, string sIDValue)
            {
                if (null == conn || stream == null || sTable == "" || sBlobField == "" || sIDName == "" || sIDValue == "")
                    throw new NullReferenceException();
    
                DataSet dataSet = null;
                OdbcDataAdapter adapter = null;
                byte[] buff = null;
                DataRow row = null;
                int iRtn = 0;
                string sSQL = String.Format("SELECT * FROM {0} WHERE {1} = '{2}'", sTable, sIDName, sIDValue);
    
                try
                {
                    adapter = new OdbcDataAdapter(sSQL, conn);
                    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                    dataSet = new DataSet(sTable);
                    OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter);
                    adapter.Fill(dataSet, sTable);
                    // read blob data from stream
                    // cause there is only one row, the index we need update is 0
                    int iCnt = dataSet.Tables[0].Rows.Count;
                    row = dataSet.Tables[sTable].Rows[0];
                    buff = new byte[stream.Length];
                    stream.Seek(0, SeekOrigin.Begin);
                    stream.Read(buff, 0, System.Convert.ToInt32(stream.Length));
                    // update table's blob field
                    row[sBlobField] = buff;
                    iRtn = adapter.Update(dataSet, sTable);
                }
                catch (Exception ee)
                {
                    string err = ee.Message.ToString();
                    MessageBox.Show(ee.Message + ee.StackTrace);
                    buff = null;
                }
                finally
                {
                    if (dataSet != null)
                        dataSet.Dispose();
                    if (adapter != null)
                        adapter.Dispose();
                }
    
                //stream.Close();
                // there is an exception happened or update false
                if (buff == null || iRtn == 0)
                    return false;
                return true;
            }
    
            #endregion
    

     2.sql语句采用parameter

        string image = BlobToString(DBConnection.m_DataBaseConn, "imagetable", "ImageData", "ImageID", readerIl[0].ToString());
           if (image == null) { readerIl2.Close(); continue; }
           byte[] bytes = strhelper.str2arr(image);
           cmmandIr.CommandText = "update imagetable set imagedata = ? where imageid = '" + readerIl[0].ToString() + "'";
           commandIr.Parameters.Add("@a", bytes);
           commandIr.ExecuteNonQuery();
    
  • 相关阅读:
    【转载】关于nginx以及内核参数的配置
    【转载】Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
    【转载】GET和POST两种基本请求方法的区别
    Eureka的使用
    【转载】Spring Cloud全家桶主要组件及简要介绍
    java阶段学习目标
    【转载】java对象和byte数组互转,直接拿去用
    【转载】非对称加密过程详解(基于RSA非对称加密算法实现)
    Python 四种数值类型(int,long,float,complex)区别及转换
    Python2和Python3中print的不同点
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9020597.html
Copyright © 2011-2022 走看看