C#写入和读取数据库blob字段代码

简介: 版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/7406945 读取本地文件,存入数据库blob字段。
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/7406945

读取本地文件,存入数据库blob字段。

try
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "*.*|*.*";
                openFileDialog.CheckFileExists = true;
                openFileDialog.Title = "选择上传的文件";

                if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }

                FileStream fileStream = new FileStream(
                    openFileDialog.FileName, FileMode.Open, FileAccess.Read);
      
		byte[] fileData = new byte[fileStream.length + 1];	
                fileStream.Read(fileData, 0, (int)fileStream.Length);

                string sql = "select * from TABLE_NAME where id = '" + id + "'";
                DataSet ds = OA.RsGet(sql, null);
                DataRow row;

                if (ds.Tables[0].Rows.Count > 0)
                {
                    row = ds.Tables[0].Rows[0];
                }
                else
                {
                    row = ds.Tables[0].NewRow();
                    
                    row["ID"] = Guid.NewGuid().ToString("N");
		    ds.Tables[0].Rows.Add(row);
		}
                row["FILE"] = fileData;
                row["otherField"] = roadWidth;
                
                if (OA.RsUpdate(ds) > 0)
                {
                    MessageBox.Show("保存成功!");
                }

            }
            catch(Exception exc)
            {
                MessageBox.Show("保存出错!请检查数据。\n" + exc.Message);
            }
         

读取数据库blob字段,存成本地文件。

/// <summary>
        /// 读取ORACLEBLOB字段到文件,返回文件名  Add by ZhaoYong  |2012-03-21|
        /// </summary>
        /// <param name="idValue">索引值</param>
        /// <param name="idField">索引字段名称</param>
        /// <param name="table">要查询的表名称</param>
        /// <param name="blobField">存放文件的字段名称</param>
        /// <param name="outFileFullName">保存到本地的文件名</param>
        /// <returns></returns>
        public static bool ReadBlobToFile(string idValue, string idField, string table, string blobField, string outFileFullName)
        {
            int PictureCol = 0;

            outFileFullName = outFileFullName.Trim();

            try
            {
                OracleCommand cmd = new OracleCommand("Select " + blobField + " From " + table +
                    " Where " + idField + "='" + idValue + "'", OracleDb.OracleDb.Connection);
                
                OracleDataReader myReader = cmd.ExecuteReader();
                myReader.Read();

                if (myReader.HasRows == false)
                {
                    return false;
                }

                byte[] b = new byte[myReader.GetBytes(PictureCol, 0, null, 0, int.MaxValue) - 1];
                myReader.GetBytes(PictureCol, 0, b, 0, b.Length);
                myReader.Close();

                System.IO.FileStream fileStream = new System.IO.FileStream(
                    outFileFullName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
                fileStream.Write(b, 0, b.Length);
                fileStream.Close();
            }
            catch
            {
                return false;
            }

            return true;
        }







相关文章
|
11天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
29 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
3天前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
7 0
|
5天前
|
SQL 存储 Oracle
C#利用IDbCommand实现通用数据库脚本执行程序
C#利用IDbCommand实现通用数据库脚本执行程序
|
10天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
10天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
|
11天前
|
Java 关系型数据库 测试技术
Java代码一键生成数据库文档(案例详解)
Screw是一个自动化数据库文档生成工具,能根据数据库表结构快速生成简洁、多格式(HTML、Word、Markdown)的文档,支持MySQL、MariaDB等多数据库。它使用Freemarker模板,允许用户自定义样式。依赖包括HikariCP数据库连接池和对应JDBC驱动。通过在Java代码或Maven插件中配置,可方便生成文档。示例代码展示了如何在测试用例中使用Screw。文档效果依赖于数据库中的表和字段注释。
|
11天前
|
数据库
数据库字段
数据库字段
|
12天前
|
分布式计算 关系型数据库 大数据
MaxCompute产品使用合集之怎么才可以将 PostgreSQL 中的 geometry 空间类型字段同步到 MaxCompute 或另一个 PostgreSQL 数据库
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
21天前
|
SQL 存储 数据库连接
C#编程与数据库交互的实现
【4月更文挑战第20天】C#与数据库交互是现代软件开发的关键,涉及数据库连接、数据操作和访问方式。使用ADO.NET建立连接,执行SQL实现读取、插入、更新和删除数据。可通过直接SQL或数据访问对象进行操作。注意性能优化,使用连接池,处理异常,确保安全,以提升应用性能和稳定性。