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

猜你喜欢

转载自www.cnblogs.com/gaara-zhang/p/9020597.html