请问,在从SQLSERVER 的image 字段导入Access 的 OLE对象字段和 从Access OLE对象字段导入SQLSERVER 的image 字段时分别要进行怎样的处理?实例如下:
Access数据库的 A表中有一列为OLE对象类型,存放上传的图片文件。
我试着直接 select A表然后 insert into 到 Sql server中的B表,从B表下载该文件的时候能打开文件,但是内容却显示为“System.Byte[]”
请问是不是不能直接把Access表的 OLE对象字段插入Sql server的 Image字段呢?如果要解决这个问题,需要做怎样的处理呢?
具体代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.ComponentModel;
using System.Data.OleDb;
using System.IO;
using System.Data.SqlClient;public partial class view : System.Web.UI.Page
{
      protected void Page_Load(object sender, EventArgs e)
    {   
        OleDbConnection OleConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\db1.mdb");
        SqlConnection sqlconn = new SqlConnection("Sql数据库连接");
         OleConn.Open();
         sqlconn.Open();
        string ss = "select Image1 from image1  where id=27";
       
        OleDbCommand comm = new OleDbCommand(ss, OleConn);//access数据库
        try
        {
            byte[] img = (Byte[])comm.ExecuteScalar();
            string sqlss="insert into school(photo) values('"+img+"')";
            SqlCommand sqlcomm=new SqlCommand(sqlss,sqlconn);//插入到sql数据库
            sqlcomm.ExecuteNonQuery();
           // Response.BinaryWrite(img);
           // Response.ContentType = "image/jpeg";
        }
        catch
        {
            
        }
        sqlconn.Close();
        OleConn.Close();    }
}

解决方案 »

  1.   

    这个要拆解OLE 外壳,  你得研究OLE的对象结构然后把真正的图像内容摘出来, 存到sqlserver中
      

  2.   

    string sqlss="insert into school(photo) values(@img)";
    SqlCommand sqlcomm=new SqlCommand(sqlss,sqlconn);//插入到sql数据库
    sqlcomm.Parameters.AddWithValue("@img",img)ole不是字符串,不能写  string sqlss="insert into school(photo) values('"+img+"')";
      

  3.   

    mssql和access其实兼容性很强的。比竟都是出自MS.