社区
C#
帖子详情
请问一下怎么用ado.net读取大数据
runrunrun
2006-06-01 08:47:45
我在数据库中的一条记录中存了二进制数据,大概有几十兆。现在不想一次把所有的数据都读到内存里,想分成若干个大小为64K的数据块,再依次读出。请问该如何做
...全文
235
10
打赏
收藏
请问一下怎么用ado.net读取大数据
我在数据库中的一条记录中存了二进制数据,大概有几十兆。现在不想一次把所有的数据都读到内存里,想分成若干个大小为64K的数据块,再依次读出。请问该如何做
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NogamesNow
2006-06-03
打赏
举报
回复
mark了,不熟悉
viena
2006-06-02
打赏
举报
回复
byte数组
bhwhy
2006-06-02
打赏
举报
回复
这么大的东西楼主都想写进数据库。。比较恐怖.这个贴子介绍的较细。MARK
http://community.csdn.net/Expert/topic/4756/4756451.xml?temp=.7671015
laopokanhai
2006-06-02
打赏
举报
回复
学习了
Knight94
2006-06-02
打赏
举报
回复
如果上几十兆的东西,就不要再向数据库存了,ado.net好像没有类似于MemoryStream或者FileStream所提供的方法,即你不能分批去写。
runrunrun
2006-06-02
打赏
举报
回复
才几十兆算什么。数据库不都是号称一个字段最多能放2G,整个库可以放上TB的数据么。但是2G的数据我总不可能一次都放到byte数据里吧。
那个 dr.GetBytes 不知道是不是一次把所有数据全读到内存里,然后再一段段返回给用户。如果是这样,就没有什么意义了
runrunrun
2006-06-02
打赏
举报
回复
才几十兆算什么。数据库不都是号称一个字段最
alcuard
2006-06-01
打赏
举报
回复
通过上面的反过程,将大数据文件放在一个stream中转化成byte然后附给dataset让dataset帮你保存就行了
runrunrun
2006-06-01
打赏
举报
回复
谢谢。我还想问一下写数据库该如何写
amandag
2006-06-01
打赏
举报
回复
//我有一个读数据库图片文件的例子,请参考
using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
class BLOBDemo
{
[STAThread]
static void Main(string[] args)
{
SqlConnection cn = new SqlConnection("Data Source = (local);Integrated Security = SSPI;Initial Catalog=pubs");
SqlCommand cmd = new SqlCommand("Select pub_id,logo FROM pub_info", cn);
FileStream fs;
BinaryWriter bw;
//缓冲区大小
const int bufferSize = 100;
byte [] outByte = new byte[bufferSize];
//GetBytes返回的字节数量
long retval;
//BLOB输出的起始位置
long startIndex = 0;
string pub_id = "";
cn.Open();
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while(dr.Read())
{
pub_id = dr.GetString(0);
fs = new FileStream("logo" + pub_id + ".bmp", FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);
startIndex = 0;
do
{
retval = dr.GetBytes(1, startIndex, outByte, 0, bufferSize);
// Console.WriteLine(retval.ToString());
bw.Write(outByte);
bw.Flush();
startIndex += bufferSize;
}while(retval == bufferSize);
bw.Write(outByte, 0, (int)retval - 1);
bw.Flush();
bw.Close();
fs.Close();
}
dr.Close();
cn.Close();
}
}
Dapper从入门到精通
在性能方面拥有微型ORM之王的美誉,几乎与原生
ADO.NET
数据
读取
器一样快,如果你在小的项目中使用Entity Framework、NHibernate等框架来处理
大数据
访问及关系映射,未免有点杀鸡用牛刀,你又觉得ORM省时省力,这时...
ADO.NET
和
大数据
缓存的应用场景
这种结合使用的方式可以充分利用缓存的高性能和数据库的持久性,提高应用的响应速度和并发处理能力。同时,也需要注意缓存和数据库之间的数据同步和一致性问题,以及缓存的失效策略和更新策略。导入/导出大量数据:...
winform控件与
ADO.NET
ADO.NET
的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用
ADO.NET
名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。
.NET(C#) 使用
ADO.NET
上万条海量数据大批量插入优化的方法
.NET(C#)中使用
ADO.NET
大批量插入海量数据时,将大批量数据全部加载到内存中可能导致内存消耗过高,甚至导致内存溢出。
ADO.NET
大数据
最佳实践
对于非常大的数据集,可能需要考虑使用其他技术,如Entity Framework的延迟加载、数据库视图、存储过程或专门的
大数据
处理工具(如Apache Spark、Hadoop等)。使用异步编程模型(如async和await关键字)来避免阻塞UI...
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章