dataGridView1.DataSource = myBindingSource异常

zhiyong1822 2010-12-30 12:51:26
dataGridView1.DataSource = myBindingSource;
后出现异常,其中这个数据源中有一个字段是blob类型,如果要是其他的类型就不会出现异常
异常图形如下
...全文
103 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhiyong1822 2010-12-30
  • 打赏
  • 举报
回复
多谢,先研究研究
hinada99 2010-12-30
  • 打赏
  • 举报
回复
楼主好运~
hinada99 2010-12-30
  • 打赏
  • 举报
回复
//楼主用了DataGridView,那我只能假定楼主的思路是
// DG.DataSource= DataTable, return DataSet.Tables[0], OracleDataAdapter.Fill
(DataSet)


//下面这段代码中 --phsedo code 以外的部分, 是可以直接使用的,不过 返回的datatable中不能有
//Blob类型数据


//下面这段代码中 --phsedo code的部分 没有验证过,因为现在机器上 没有Oracle,无法测试
//只是一个思路而已,需要楼主自己 类比,调试。


public static DataTable GetTable(OracleConnection Connection, string SQLText)
{

OracleDataAdapter oda = new OracleDataAdapter(SQLText, Connection);

//oda中转换掉BLOB类型的字段
//--phsedo code
{ /如果第i个列的字段类型是BLOB
For(int i=0;i<=oda.Tables[0].FieldCount-1;i++)
{
If(odaTables[0].Fields(i).FieldType==BLOB)
{ //那就把第i列全部转成字符串
For(int j=0;j<=oda.Tables[0].RecordCount-1;j++)
{//(1)转成byte[],(2)byte[]转成字符串
Oda.Tables[0](j,i)=(byte[])Oda.Tables[0](j,i);
Oda.Tables[0](j,i)=Oda.Tables[0](j,i).ToString();
}
}

}

}
//----phsedo code

DataSet ds = new DataSet();
oda.Fill(ds);
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0] != null)
{
return ds.Tables[0];
}
return null;
}
return null;

}
return null;
}

}
}
zhiyong1822 2010-12-30
  • 打赏
  • 举报
回复
你好,如何把数据库的一个表,其中这个表有一个字段是blob类型,还有其他的一些类型。 读入dataGridView1显示,最好给个例子
hinada99 2010-12-30
  • 打赏
  • 举报
回复
解释下
我的代码中 "BUREAUIDEA" 的类型就是 BLOB类型的
就是 "select BlobFieldName from TB where 主键字段名='" + fieldValue + "'";
中的 BlobFieldName 。

当时提交代码时 没改完全
zhiyong1822 2010-12-30
  • 打赏
  • 举报
回复
多谢,我用的是interbase数据库,因为别人做的一个数据库,我要对这个数据库进行操作。我对您的回答先研究研究,有问题再提问
hinada99 2010-12-30
  • 打赏
  • 举报
回复
//假设 表名是TB, BLOB字段的字段名是 BlobFieldName, 查询条件是 主键字段名='" + fieldValue + "'
//读取BLOB字段值的方法。传入一个字符串作为查询条件,返回值 是 BLOB类型转为 字符串后的值

public static string GetTextBLOB(string fieldValue)
{
string result = "";
string myConnectionString = "";
string mySelectString = "";

//创建连接
OracleConnection conn = new OracleConnection(myConnectionString);
conn.Open();

//设置sql语句
mySelectString = "select BlobFieldName from TB where 主键字段名='" + fieldValue + "'";

OracleCommand cmd = new OracleCommand(mySelectString, conn);

OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (dr["BUREAUIDEA"].ToString() == "")//如果文章内容为空 不能转二进制
result = "";
else
{
//使用byte型数组读取BLOB字段的值,将dr["BUREAUIDEA"]转成byte型数组
byte[] b = (byte[])dr["BUREAUIDEA"];
//将byte型数组转成 字符串。
result=System.Text.Encoding.Unicode.GetString(b);
}
}
conn.Close();

return result;
}
hinada99 2010-12-30
  • 打赏
  • 举报
回复
楼主 的 表名 和 数据库中 BLOB类型字段 的名称 是什么?
使用的 是 ORacle数据库否?
hinada99 2010-12-30
  • 打赏
  • 举报
回复
BLB 类型的 数据 的 读取方式 很不同.
必须使用 另外的 方法 来读取 BLOB 类型字段的值

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧