VS通过Oracle驱动连接数据库,对图片进行存取操作(Oracle.DataAccess.Client.dll)

通过Oracle.DataAccess.Client.dll访问数据库时,若本机Oracle客户端的版本是64位,可能会报以下错误:
未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。试图加载格式不正确的程序
原因是服务器的与本机的Oracle客户端的版本不同,解决方法:右击项目,选择【属性】->【生成】,将目标平台改为x64即可。
代码如下:

            //从本地获取图片字节数组
            Byte[] imgbyte = null;
            string imagPath = @"C:\Users\Public\Pictures\Sample Pictures\aaa.jpg";
            using(FileStream fs = new FileStream(imagPath, FileMode.Open, FileAccess.Read))
            {
                imgbyte = new Byte[fs.Length];
                fs.Read(imgbyte, 0, imgbyte.Length);
                fs.Close();
            }
            
            //通过Oracle公司提供的驱动连接数据库,Oracle.DataAccess.Client.dll可从Oracle客户端的安装路径(...\dbhome_1\ODP.NET\bin\2.x)获取
            string connString = "Data Source = datasource;User ID = userid;Password = password;";
            //string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = servername)));User ID = userid;Password = password;";
            Oracle.DataAccess.Client.OracleConnection con = new Oracle.DataAccess.Client.OracleConnection(connString);
            Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand();
            cmd.CommandText = "insert into tbl_picture(id,picture,createtime) values(666,:picture,sysdate)";
            cmd.Parameters.Add("picture", OracleDbType.Blob).Value = imgbyte;
            cmd.Connection = con;
            try
            {
                con.Open();
                //图片存入数据库
                int count = cmd.ExecuteNonQuery();
                Console.WriteLine("图片存储成功,"+count+"行受影响!");

                //从数据库获取图片字节数组并写入本地
                cmd.CommandText = "select picture from tbl_picture where id = 666";
                Oracle.DataAccess.Client.OracleDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    byte[] iBytes = reader.GetFieldValue<byte[]>(0);
                    Console.WriteLine("从数据库获取图片成功!");
                    //写入本地
                    string filePath = @"C:\TestPicture\";
                    if (!Directory.Exists(filePath)) Directory.CreateDirectory(filePath);
                    string fileName = filePath+"aaafb.jpg";
                    using (FileStream fss = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    {
                        fss.Write(iBytes, 0, iBytes.Length);
                        fss.Close();
                        Console.WriteLine("图片已写入本地,路径:"+filePath);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("异常抛出:" + ex.Message);
            }
            finally
            {
                con.Close();
            }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值