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();
    
  • 相关阅读:
    OA开发中下载模板文件的方法之xml篇
    使用不同的doctype造成不同的显示效果
    反射发送实战(-)InvokeMember [转载]
    浅谈DataGridTableStyle心得
    动态加载控件疑惑。。。。
    不同语言中的关键字的比较
    利用mask在PhotoShop完成渐变的图片。
    碰撞代码
    接近感应传感器
    SQLite在多线程环境下的应用
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9020597.html
Copyright © 2011-2022 走看看