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