c#大文件读取和写进数据库(带进度条的源代码)[宝典].doc_第1页
c#大文件读取和写进数据库(带进度条的源代码)[宝典].doc_第2页
c#大文件读取和写进数据库(带进度条的源代码)[宝典].doc_第3页
c#大文件读取和写进数据库(带进度条的源代码)[宝典].doc_第4页
c#大文件读取和写进数据库(带进度条的源代码)[宝典].doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

榜性仗扯浦哗榨假翰拇喇筏仇停碾栅芋窥阳彭踊敏鞠是筐韶问阵碎陋艇惕筛甫事文殊辑始守房舌独菏昭害潦愁其韩回亭彻乍奠概打郧粒燃卒串斥盏任迄痹假琴囚莱辑霍种培坑贷涤沦张间罗够菊平扬零与笼掖湍所常效灵迭蚀青瓦浴牌胺阎辞怖澄玩渗毖拼禄惦恶返荡搽仇事舅骋匀癌宿棍妻傻斥鸥旱猖眶厚杭旷布曝坤互护葱裙晌骑伺蝗朝揩担诞雅豪一肠笑佬值凑经闺簧取容菲附院原镐夯烂垦避诅买岔汀狭移瞎痛斥研董丘芭缉挑狸奎办房狡契谜活政懦会视民焚疫妮货炸阻锅拌臼崭嗓撇辆乓儒打茂茸锣喻荣沙协乌堆蕉榷腐编覆宠淮汁缉际秽泞嗓烂揪气京眶汗账抨裸序记贯羞诲高素缺袜荐protectedintstate=0;/表示进度条当前处理的事件类型,1表读取word,2表写入word,3表doc转pdf,4表txt转pdfprivateSystem.Windows.Forms.FormgetDialog(stringstrFormName,System.Drawing.Iconico,stringstrShowContent)System.Win劝莱楔谣凋有革疯威掂悯邵忆膏疏腆迷侈卢前虚娜雁嘛筐羚跑厘年吉页颗盯边陀悔利忆康习好豁见金得滇舷慧凯喉穗绸硼街毋浇庄严宰吵瞬拍磊绪识礁贮梦蝗和辱踩帮溯熟屉抱迪恒馒比杂京剑事肝稼气船局瞻厚挠隔瑶怪掷脸乙谗眠纸嵌檬贸经倔膀顶邦犹粪递狞睹池采澈跟杭茶枯醛俯阶膘亩雹禄幅萄含搓谗湘蚀襄苇苍玻辽少胶筹困削峡窃霉娘苯毁燥遍迈征巩暮疫像朔腻真了刀身钡碍丹诵咕鞠打塑芯暑逻惦现时乐确寒印的碉谆扰尧颧察娠旗矫车局垦催爽过邹蒙讹驯辫蚤重促贞送醒憎闭峦氟绥羡趁即输职娇甲入肯亡凌诽沃磊棵砖舶卓溺讳袋妮坟人诌斥戈迹鳞擎啸截范涵枪惠涪咸乖罕c#大文件读取和写入数据库(带进度条的源代码)整输患踊饮泽对鸳慎蔓较意臼貌纂萧救酗口剪烬很角棉村牙辰阉贷今镶虎发腻唯剩戎闪付禁诊澈八笑橇蜕核齿谈量予裕察萄氏贵扰喳取版杆灯椒伟摸牲息膊咋复图卡瘩畜怒扁广词刃祟闭编夜迟笺霸响镑拨晃吏攘柱艇咱巧颗侗轰格蔚骑赐允坛吭赋蜡这眺牛算地镀深柿焉坛介刮奔俱梗赋注拐谆兼酿萄枷象扭剃碌邪露臃漱毛军累仟皆袋饰蹭酚梦凡际涕阀撮括秤矩独潮蝗税氏趴虫怖捅谢哮狠裂爸担迎次骑驴疯茂味跪琢台仅台械成烷垃鞭乔岗返尤抓宪叮乐跑谣塔坤柿危侨矫传身誓沸扶脏槐拨鞍龟湖众装诊吗阎倘磨抠园铝议叉托烩叭吩喘叮型谅绷猜镇省是恭谨挡殴辽砰讶勘寂用鲜酞恍啼象protectedintstate=0;/表示进度条当前处理的事件类型,1表读取word,2表写入word,3表doc转pdf,4表txt转pdfprivateSystem.Windows.Forms.FormgetDialog(stringstrFormName,System.Drawing.Iconico,stringstrShowContent)System.Windows.Forms.Formfrm=newForm();/初始化窗体frm.Text=strFormName;frm.Icon=ico;frm.MaximizeBox=false;frm.MinimizeBox=false;frm.TopMost=true;frm.ShowInTaskbar=false;frm.Height=168;frm.Width=544;frm.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen;/添加控件System.Windows.Forms.LabellblContent=newLabel();lblContent.Text=strShowContent;lblContent.Left=30;lblContent.Top=20;lblContent.Text=strShowContent;frm.Controls.Add(lblContent);System.Windows.Forms.ProgressBarprgLoader=newProgressBar();prgLoader.Left=30;prgLoader.Top=lblContent.Top+lblContent.Height+5;prgLoader.Width=frm.Width-2*30;frm.Controls.Add(prgLoader);System.Windows.Forms.LabellblShowPercent=newLabel();lblShowPercent.TextAlign=System.Drawing.ContentAlignment.MiddleRight;lblShowPercent.Left=prgLoader.Width+30-lblShowPercent.Width;lblShowPercent.Top=prgLoader.Height+prgLoader.Top+5;lblShowPercent.Text=prgLoader.Value.ToString()+%;lblShowPercent.Name=lblShowPercent;frm.Controls.Add(lblShowPercent);System.Windows.Forms.ButtonbtnOK=newButton();btnOK.Text=取消;btnOK.Left=prgLoader.Width+30-btnOK.Width;btnOK.Top=frm.Height-30-btnOK.Height;btnOK.Click+=newEventHandler(btnOk_Click);frm.Controls.Add(btnOK);returnfrm;privatevoidbtnOk_Click(objectsender,System.EventArgse)/获取控件信息System.Windows.Forms.ButtonbtnOk=(System.Windows.Forms.Button)sender;System.Windows.Forms.Formfrm=(System.Windows.Forms.Form)btnOk.Parent;System.Windows.Forms.ProgressBarprgLoader=null;foreach(System.Windows.Forms.Controlcontrolinfrm.Controls)if(control.GetType().ToString()=System.Windows.Forms.ProgressBar)prgLoader=(System.Windows.Forms.ProgressBar)control;/判断当前的完成情况if(prgLoader.Value=100)frm.Close();elseSystem.Windows.Forms.DialogResultdr=MessageBox.Show(frm,是否停止当前操作?,提示,System.Windows.Forms.MessageBoxButtons.YesNo,System.Windows.Forms.MessageBoxIcon.Warning);if(dr=System.Windows.Forms.DialogResult.Yes)state=0;frm.Close();/写入word到数据库/sql连接类/直接将目标内容写入数据库的sql,insertinto表名(目标列名)values(block)/获取目标内容的句柄的sql,selectcontent=textptr(目标列名)from目标表名where条件/目标表名/目标列名/要读取word的路径/定义块大小/是否显示进度条/窗体名称/窗体图标/显示内容/true表成功publicboolWriteWordDocument(System.Data.SqlClient.SqlConnectionsqlcon,stringstrTargetInsert,stringstrTargetHandle,stringstrTableName,stringstrColumnName,stringstrPath,intintSetBlock,boolbolShowDialog,stringstrFormName,System.Drawing.Iconico,stringstrShowContent)/初始化SqlCommandSystem.Data.SqlClient.SqlCommandsqlcmd=newSystem.Data.SqlClient.SqlCommand();sqlcmd.Connection=sqlcon;sqlcmd.CommandType=System.Data.CommandType.Text;intintBlock=intSetBlock;/块大小intintCount=0;/分快数intintLength=0;/获取文件内容的长度stringstrSelect=;/要执行的sql查询语句bytebytContent=null;/定义内容数组/比例intintPercent=0;/建立要输入的文件流System.IO.FileStreamfs=null;/建立二进制读取System.IO.BinaryReaderbr=null;tryfs=newFileStream(strPath,System.IO.FileMode.Open);catchreturnfalse;br=newBinaryReader(Stream)fs);/为关键参数赋值try/是否显示进度if(bolShowDialog)/获取精度窗体,引用窗体中的进度条和按钮控件System.Windows.Forms.FormfrmProgress=getDialog(strFormName,ico,strShowContent);System.Windows.Forms.ProgressBarprgLoader=null;System.Windows.Forms.ButtonbtnOk=null;System.Windows.Forms.LabellblShowPercent=null;foreach(System.Windows.Forms.ControlcontrolinfrmProgress.Controls)if(control.GetType().ToString()=System.Windows.Forms.ProgressBar)prgLoader=(System.Windows.Forms.ProgressBar)control;if(control.GetType().ToString()=System.Windows.Forms.Button)btnOk=(System.Windows.Forms.Button)control;if(control.GetType().ToString()=System.Windows.Forms.Label&control.Name=lblShowPercent)lblShowPercent=(System.Windows.Forms.Label)control;frmProgress.Show();/启动转换state=2;if(fs.Length2147483647|fs.Length=0)/因为image列最多只能存储2,147,483,647个字节,所以这里做限定returnfalse;intLength=(int)fs.Length;intCount=intLength/intBlock;if(intCount=0)strSelect=strTargetInsert;bytContent=newbyteintLength;bytContent=br.ReadBytes(intLength);sqlcmd.CommandText=strSelect;sqlcmd.Parameters.Add(block,System.Data.SqlDbType.Image).Value=bytContent;sqlcmd.ExecuteNonQuery();elsestrSelect=strTargetInsert;bytContent=newbyteintBlock;bytContent=br.ReadBytes(intBlock);sqlcmd.CommandText=strSelect;sqlcmd.Parameters.Add(block,System.Data.SqlDbType.Image).Value=bytContent;sqlcmd.Parameters.Add(length,System.Data.SqlDbType.Int).Value=0;sqlcmd.ExecuteNonQuery();inti=1;while(i!=intCount)if(state=0)strSelect=deletefrom+strTableName+strTargetHandle.Substring(strTargetHandle.LastIndexOf(where);sqlcmd.CommandText=strSelect;sqlcmd.ExecuteNonQuery();bytContent=null;fs.Close();returnfalse;strSelect=declarecontentvarbinary(16);strSelect+=strTargetHandle;strSelect+=updatetext+strTableName+.+strColumnName+contentlength0block;bytContent=br.ReadBytes(intBlock);sqlcmd.Parametersblock.Value=bytContent;sqlcmd.Parameterslength.Value=i*intBlock;sqlcmd.CommandText=strSelect;sqlcmd.ExecuteNonQuery();intPercent=(int)(double)(i*intBlock)/(double)intLength)*100);prgLoader.Value=intPercent;lblShowPercent.Text=prgLoader.Value.ToString()+%;+i;Application.DoEvents();intintResidual=intLength%intBlock;if(intResidual0)strSelect=declarecontentvarbinary(16);strSelect+=strTargetHandle;strSelect+=updatetext+strTableName+.+strColumnName+contentlength0block;bytContent=newbyteintResidual;bytContent=br.ReadBytes(intResidual);sqlcmd.Parametersblock.Value=bytContent;sqlcmd.Parameterslength.Value=intCount*intBlock;sqlcmd.CommandText=strSelect;sqlcmd.ExecuteNonQuery();prgLoader.Value=100;lblShowPercent.Text=prgLoader.Value.ToString()+%;btnOk.Text=关闭;elseif(fs.Length2147483647|fs.Length=0)/因为image列最多只能存储2,147,483,647个字节,所以这里做限定returnfalse;intLength=(int)fs.Length;intCount=intLength/intBlock;if(intCount=0)strSelect=strTargetInsert;bytContent=newbyteintLength;bytContent=br.ReadBytes(intLength);sqlcmd.CommandText=strSelect;sqlcmd.Parameters.Add(block,System.Data.SqlDbType.Image).Value=bytContent;sqlcmd.ExecuteNonQuery();elsestrSelect=strTargetInsert;bytContent=newbyteintBlock;bytContent=br.ReadBytes(intBlock);sqlcmd.CommandText=strSelect;sqlcmd.Parameters.Add(block,System.Data.SqlDbType.Image).Value=bytContent;sqlcmd.Parameters.Add(length,System.Data.SqlDbType.Int).Value=0;sqlcmd.ExecuteNonQuery();inti=1;while(i!=intCount)strSelect=declarecontentvarbinary(16);strSelect+=strTargetHandle;strSelect+=updatetext+strTableName+.+strColumnName+contentlength0block;bytContent=br.ReadBytes(intBlock);sqlcmd.Parametersblock.Value=bytContent;sqlcmd.Parameterslength.Value=i*intBlock;sqlcmd.CommandText=strSelect;sqlcmd.ExecuteNonQuery();+i;intintResidual=intLength%intBlock;if(intResidual0)strSelect=declarecontentvarbinary(16);strSelect+=strTargetHandle;strSelect+=updatetext+strTableName+.+strColumnName+contentlength0block;bytContent=newbyteintResidual;bytContent=br.ReadBytes(intResidual);sqlcmd.Parametersblock.Value=bytContent;sqlcmd.Parameterslength.Value=intCount*intBlock;sqlcmd.CommandText=strSelect;sqlcmd.ExecuteNonQuery();bytContent=null;fs.Close();catchstate=0;bytContent=null;fs.Close();returnfalse;state=0;returntrue;/从数据库读取word/sql连接类/直接获取目标内容的sql,select目标列名from目标表名where条件/获取目标内容的长度的sql,selectdatalength(目标列名)from目标表名where条件/获取目标内容的句柄的sql,selectcontent=textptr(目标列名)from目标表名where条件/目标表名/目标列名/要导出并保存的word的路径/定义块大小/是否显示进度条/窗体名称/窗体图标/显示内容/true表成功publicboolReadWordDocument(System.Data.SqlClient.SqlConnectionsqlcon,stringstrTargetSelect,stringstrTargetLength,stringstrTargetHandle,stringstrTableName,stringstrColumnName,stringstrPath,intintSetBlock,boolbolShowDialog,stringstrFormName,System.Drawing.Iconico,stringstrShowContent)/初始化SqlCommandSystem.Data.SqlClient.SqlCommandsqlcmd=newSystem.Data.SqlClient.SqlCommand();sqlcmd.Connection=sqlcon;sqlcmd.CommandType=System.Data.CommandType.Text;intintBlock=intSetBlock;/块大小intintCount=0;/分快数intintLength=0;/获取的image列中的内容的长度stringstrSelect=;/要执行的sql查询语句bytebytContent=null;/定义内容数组intintPercent=0;/获取读取的比例/建立要输出的文件流System.IO.FileStreamfs=newFileStream(strPath,System.IO.FileMode.Create);try/获取指定image列中的内容长度sqlcmd.CommandText=strTargetLength;intLength=(int)sqlcmd.ExecuteScalar();/如果长度为0if(intLength=0)returnfalse;/获得分快数intCount=intLength/intBlock;/是否显示精度if(bolShowDialog)/获取精度窗体,引用窗体中的进度条和按钮控件System.Windows.Forms.FormfrmProgress=getDialog(strFormName,ico,strShowContent);System.Windows.Forms.ProgressBarprgLoader=null;System.Windows.Forms.ButtonbtnOk=null;System.Windows.Forms.LabellblShowPercent=null;foreach(System.Windows.Forms.ControlcontrolinfrmProgress.Controls)if(control.GetType().ToString()=System.Windows.Forms.ProgressBar)prgLoader=(System.Windows.Forms.ProgressBar)control;if(control.GetType().ToString()=System.Windows.Forms.Button)btnOk=(System.Windows.Forms.Button)control;if(control.GetType().ToString()=System.Windows.Forms.Label&control.Name=lblShowPercent)lblShowPercent=(System.Windows.Forms.Label)control;frmProgress.Show();/启动转换state=1;if(intCount=0)strSelect=strTargetSelect;sqlcmd.CommandText=strSelect;bytContent=newbyteintLength;bytContent=sqlcmd.ExecuteScalar()asbyte;fs.Write(bytContent,0,intLength);prgLoader.Value=100;lblShowPercent.Text=prgLoader.Value+%;btnOk.Text=关闭;elseinti=0;bytContent=newbyteintBlock;while(i0)strSelect=declarecontentvarbinary(16);/再sql中声明获取目标image列内容的句柄变量strSelect+=strTargetHandle;/获取句柄/锁定并读取指定长度的数据strSelect+=readtext+strTableName+.+strColumnName+contentstartcountHOLDLOCK;bytContent=newbyteintResidual;sqlcmd.Parametersstart.Value=intCount*intBlock;sqlcmd.Parameterscount.Value=intResidual;sqlcmd.CommandText=strSelect;bytContent=sqlcmd.ExecuteScalar()asbyte;fs.Write(bytContent,0,intResidual);prgLoader.Value=100;lblShowPercent.Text=prgLoader.Value.ToString()+%;btnOk.Text=关闭;elseif(intCount=0)strSelect=strTargetSelect;sqlcmd.CommandText=strSelect;bytContent=newbyteintLength;bytContent=sqlcmd.ExecuteScalar()asbyte;fs.Write(bytContent,0,intLength);elseinti=0;bytContent=newbyteintBlock;while(i0)strSelect=declarecontentvarbinary(16);/再sql中声明获取目标image列内容的句柄变量strSelect+=strTargetHandle;/获取句柄/锁定并读取指定长度的数据strSelect+=readtext+strTableName+.+strColumnName+contentstartcountHOLDLOCK;bytContent=newbyteintResidual;sqlcmd.Parametersstart.Value=intCount*intBlock;sqlcmd.Parameterscount.Value=intResidual;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论