.net对sqlserver的支持那没得话说,目前做db2的win,
oledb的访问方式,对大对象不能支持,odbc的访问方式又对存储过程不能支持
所以就放弃oledb的方式,毕竟db2的存储过程不如sqlserver好用,用的也是c,java的语言.
但odbc最近又出现了问题,adapter对象在fill dataset的时候,如果表中出现了如db2的大对象
blob,clob时报错,一个字晕,难道还要我read?
不知各位做过数据库的高手有何好的方法对付.net对db2这种数据库的访问.

解决方案 »

  1.   

    /// <summary>
    /// 执行查询语句,返回单个值
    /// </summary>
    /// <param name="SqlString">查询语句</param>
    public static bool StoreBlob2DataBase(byte[] content,string SqlStr)
    {
    using (OdbcConnection conn = new OdbcConnection(connectionString))
    {
    bool sign=true;
    try
    {
    conn.Open();
    OdbcCommand insert = new OdbcCommand(SqlStr,conn);
    OdbcParameter imageParameter =  insert.Parameters.Add("?", OdbcType.VarBinary,content.Length);
    imageParameter.Value = content;
    insert.ExecuteNonQuery();
    }
    catch
    {
    sign=false;
    }
    finally
    {
    conn.Close();
    }
    return sign;
    }
    }
    /// <returns>ArrayList</returns>
    public static ArrayList GetImg(string SqlString)
    {
    using (OdbcConnection conn = new OdbcConnection(connectionString))
    {
    ArrayList al=new ArrayList();
    OdbcCommand cmd = new OdbcCommand(SqlString,conn);
    try
    {
    conn.Open();
    OdbcDataReader myReader = cmd.ExecuteReader();
    if(myReader.Read())
    {
    ArrayList arr=new ArrayList();
    for(int i=0;i<myReader.FieldCount;i++)
    {
    arr.Add(myReader[i]);
    }
    al.Add(arr);
    }
    conn.Close();
    }
    catch(System.Data.Odbc.OdbcException e)
    {
    throw new Exception(e.Message);
    }
    return al;
    }
    }