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;
        }







相关文章
|
1月前
|
C# Windows
C#通过代码实现快捷键编辑
C#通过代码实现快捷键编辑
|
1月前
|
数据采集 Java 关系型数据库
Java代码高效连接数据库
Java代码高效连接数据库
16 2
|
1月前
|
存储 数据库 Python
用Python代码表示数据库
用Python代码表示数据库
14 0
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
61 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
3月前
|
开发框架 .NET 编译器
C# 10.0中Lambda表达式的改进:更简洁、更灵活的代码编写体验
【1月更文挑战第21天】随着C#语言的不断发展,Lambda表达式作为一种简洁、高效的函数式编程工具,在C# 10.0中迎来了重要的改进。本文将详细探讨C# 10.0中Lambda表达式的新特性,包括参数类型的推断增强、自然类型的Lambda参数以及Lambda表达式的属性改进等。这些改进不仅简化了Lambda表达式的编写过程,还提升了代码的可读性和灵活性,为开发者带来了更优质的编程体验。
|
3月前
|
关系型数据库 MySQL 数据库
往数据库的字段varchar 或datetime里存时间值
往数据库的字段varchar 或datetime里存时间值
118 0
|
3月前
|
C# 开发者
C# 10.0中的文件范围命名空间:简化代码组织的新方式
【1月更文挑战第18天】C# 10.0引入了文件范围的命名空间,这是一种新的语法糖,用于更简洁地组织和管理代码。文件范围命名空间允许开发者在每个文件的基础上定义命名空间,而无需显式使用花括号包裹整个文件内容。本文将深入探讨文件范围命名空间的工作原理、使用场景以及它们为C#开发者带来的便利。
|
14天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
23天前
|
存储 SQL 数据库
C# 将 Word 转文本存储到数据库并进行管理
C# 将 Word 转文本存储到数据库并进行管理
|
27天前
|
SQL Oracle 关系型数据库
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
11 0