C#读取大文件(三)_职场 sqlcmd.CommandText = strSelect;    
C#读取大文件(三)_职场             sqlcmd.ExecuteNonQuery();            
C#读取大文件(三)_职场            }    
C#读取大文件(三)_职场         }    
C#读取大文件(三)_职场        }    
C#读取大文件(三)_职场        bytContent = null;    
C#读取大文件(三)_职场        fs.Close();    
C#读取大文件(三)_职场     }    
C#读取大文件(三)_职场     catch    
C#读取大文件(三)_职场     {    
C#读取大文件(三)_职场        state = 0;    
C#读取大文件(三)_职场        bytContent = null;    
C#读取大文件(三)_职场        fs.Close();    
C#读取大文件(三)_职场        return false;    
C#读取大文件(三)_职场     }    
C#读取大文件(三)_职场     state = 0;    
C#读取大文件(三)_职场     return true;    
C#读取大文件(三)_职场    }    
C#读取大文件(三)_职场
C#读取大文件(三)_职场                /// <summary>    
C#读取大文件(三)_职场                /// 从数据库读取word    
C#读取大文件(三)_职场                /// </summary>    
C#读取大文件(三)_职场                /// <param name="sqlcon">sql连接类</param>    
C#读取大文件(三)_职场                /// <param name="strTargetSelect">直接获取目标内容的sql,"select 目标列名 from 目标表名 where 条件"</param>    
C#读取大文件(三)_职场                /// <param name="strTargetLength">获取目标内容的长度的sql,"select datalength(目标列名) from 目标表名 where 条件"</param>    
C#读取大文件(三)_职场                /// <param name="strTargetHandle">获取目标内容的句柄的sql,"select @content=textptr(目标列名) from 目标表名 where 条件"</param>    
C#读取大文件(三)_职场                /// <param name="strTableName">目标表名</param>    
C#读取大文件(三)_职场                /// <param name="strColumnName">目标列名</param>    
C#读取大文件(三)_职场                /// <param name="strPath">要导出并保存的word的路径</param>    
C#读取大文件(三)_职场                /// <param name="intSetBlock">定义块大小</param>    
C#读取大文件(三)_职场    /// <param name="bolShowDialog">是否显示进度条</param>    
C#读取大文件(三)_职场    /// <param name="strFormName">窗体名称</param>    
C#读取大文件(三)_职场    /// <param name="ico">窗体图标</param>    
C#读取大文件(三)_职场    /// <param name="strShowContent">显示内容</param>    
C#读取大文件(三)_职场                /// <returns>true表成功</returns>    
C#读取大文件(三)_职场    public bool ReadWordDocument(System.Data.SqlClient.SqlConnection sqlcon,string strTargetSelect,string strTargetLength,string strTargetHandle,string strTableName,string strColumnName,string strPath,int intSetBlock,bool bolShowDialog,string strFormName,System.Drawing.Icon ico,string strShowContent)    
C#读取大文件(三)_职场{    
C#读取大文件(三)_职场     //初始化SqlCommand    
C#读取大文件(三)_职场                        System.Data.SqlClient.SqlCommand sqlcmd = new System.Data.SqlClient.SqlCommand();    
C#读取大文件(三)_职场                        sqlcmd.Connection = sqlcon;    
C#读取大文件(三)_职场     sqlcmd.CommandType = System.Data.CommandType.Text;    
C#读取大文件(三)_职场
C#读取大文件(三)_职场     int intBlock = intSetBlock; //块大小    
C#读取大文件(三)_职场     int intCount = 0; //分快数    
C#读取大文件(三)_职场     int intLength = 0; //获取的p_w_picpath列中的内容的长度    
C#读取大文件(三)_职场     string strSelect = ""; //要执行的sql查询语句    
C#读取大文件(三)_职场     byte []bytContent = null; //定义内容数组    
C#读取大文件(三)_职场     int intPercent = 0; //获取读取的比例    
C#读取大文件(三)_职场     //建立要输出的文件流    
C#读取大文件(三)_职场     System.IO.FileStream fs = new FileStream(strPath,System.IO.FileMode.Create);    
C#读取大文件(三)_职场
C#读取大文件(三)_职场     try    
C#读取大文件(三)_职场     {    
C#读取大文件(三)_职场        //获取指定p_w_picpath列中的内容长度    
C#读取大文件(三)_职场        sqlcmd.CommandText = strTargetLength;    
C#读取大文件(三)_职场        intLength = (int)sqlcmd.ExecuteScalar();    
C#读取大文件(三)_职场        //如果长度为0    
C#读取大文件(三)_职场        if(intLength == 0)    
C#读取大文件(三)_职场        {    
C#读取大文件(三)_职场         return false;    
C#读取大文件(三)_职场        }    
C#读取大文件(三)_职场        //获得分快数    
C#读取大文件(三)_职场        intCount = intLength / intBlock;    
C#读取大文件(三)_职场
C#读取大文件(三)_职场                                //是否显示精度    
C#读取大文件(三)_职场        if(bolShowDialog)    
C#读取大文件(三)_职场        {    
C#读取大文件(三)_职场         //获取精度窗体,引用窗体中的进度条和按钮控件    
C#读取大文件(三)_职场         System.Windows.Forms.Form frmProgress = getDialog(strFormName,ico,strShowContent);    
C#读取大文件(三)_职场         System.Windows.Forms.ProgressBar prgLoader = null;    
C#读取大文件(三)_职场         System.Windows.Forms.Button btnOk = null;    
C#读取大文件(三)_职场         System.Windows.Forms.Label lblShowPercent = null;    
C#读取大文件(三)_职场         foreach(System.Windows.Forms.Control control in frmProgress.Controls)    
C#读取大文件(三)_职场         {    
C#读取大文件(三)_职场            if(control.GetType().ToString() == "System.Windows.Forms.ProgressBar")    
C#读取大文件(三)_职场            {    
C#读取大文件(三)_职场             prgLoader = (System.Windows.Forms.ProgressBar)control;    
C#读取大文件(三)_职场            }    
C#读取大文件(三)_职场            if(control.GetType().ToString() == "System.Windows.Forms.Button")    
C#读取大文件(三)_职场            {    
C#读取大文件(三)_职场             btnOk = (System.Windows.Forms.Button)control;    
C#读取大文件(三)_职场 }    
C#读取大文件(三)_职场            if(control.GetType().ToString() == "System.Windows.Forms.Label" && control.Name == "lblShowPercent")    
C#读取大文件(三)_职场            {    
C#读取大文件(三)_职场             lblShowPercent = (System.Windows.Forms.Label)control;    
C#读取大文件(三)_职场            }    
C#读取大文件(三)_职场         }    
C#读取大文件(三)_职场            
C#读取大文件(三)_职场         frmProgress.Show();    
C#读取大文件(三)_职场         //启动转换    
C#读取大文件(三)_职场         state = 1;    
C#读取大文件(三)_职场         if(intCount == 0)    
C#读取大文件(三)_职场         {    
C#读取大文件(三)_职场            strSelect = strTargetSelect;    
C#读取大文件(三)_职场            sqlcmd.CommandText = strSelect;    
C#读取大文件(三)_职场            bytContent = new byte[intLength];    
C#读取大文件(三)_职场            bytContent = sqlcmd.ExecuteScalar() as byte[];    
C#读取大文件(三)_职场            fs.Write(bytContent,0,intLength);    
C#读取大文件(三)_职场            prgLoader.Value = 100;    
C#读取大文件(三)_职场            lblShowPercent.Text = prgLoader.Value + "%";    
C#读取大文件(三)_职场            btnOk.Text = "关闭";    
C#读取大文件(三)_职场                
C#读取大文件(三)_职场         }    
C#读取大文件(三)_职场         else    
C#读取大文件(三)_职场         {    
C#读取大文件(三)_职场            int i = 0;    
C#读取大文件(三)_职场            bytContent = new byte[intBlock];    
C#读取大文件(三)_职场            while(i < intCount)    
C#读取大文件(三)_职场            {    
C#读取大文件(三)_职场             if(state == 0)    
C#读取大文件(三)_职场             {    
C#读取大文件(三)_职场                bytContent = null;    
C#读取大文件(三)_职场                System.IO.File.Delete(strPath);    
C#读取大文件(三)_职场                fs.Close();    
C#读取大文件(三)_职场                return false;    
C#读取大文件(三)_职场             }    
C#读取大文件(三)_职场             strSelect = "declare @content varbinary(16) "; //再sql中声明获取目标p_w_picpath列内容的句柄变量    
C#读取大文件(三)_职场             strSelect += strTargetHandle; //获取句柄    
C#读取大文件(三)_职场             //锁定并读取指定长度的数据    
C#读取大文件(三)_职场             strSelect += " readtext " + strTableName + "." + strColumnName + " @content @start @count HOLDLOCK";    
C#读取大文件(三)_职场             if(i == 0)    
C#读取大文件(三)_职场             {    
C#读取大文件(三)_职场                //添加@start和@count变量,分别表偏移变量和取的长度    
C#读取大文件(三)_职场 sqlcmd.Parameters.Add("@start",System.Data.SqlDbType.Int).Value = 0;    
C#读取大文件(三)_职场                sqlcmd.Parameters.Add("@count",System.Data.SqlDbType.Int).Value = intBlock;    
C#读取大文件(三)_职场             }    
C#读取大文件(三)_职场             else    
C#读取大文件(三)_职场             {    
C#读取大文件(三)_职场                sqlcmd.Parameters["@start"].Value = i * intBlock;    
C#读取大文件(三)_职场                sqlcmd.Parameters["@count"].Value = intBlock;    
C#读取大文件(三)_职场             }    
C#读取大文件(三)_职场             sqlcmd.CommandText = strSelect;    
C#读取大文件(三)_职场             bytContent = sqlcmd.ExecuteScalar() as byte[];    
C#读取大文件(三)_职场             fs.Write(bytContent,0,intBlock);    
C#读取大文件(三)_职场             intPercent = (int)(((double)(i * intBlock)) / (double)(intLength) * 100);    
C#读取大文件(三)_职场             prgLoader.Value = intPercent;    
C#读取大文件(三)_职场             lblShowPercent.Text = prgLoader.Value.ToString() + "%";    
C#读取大文件(三)_职场             Application.DoEvents();    
C#读取大文件(三)_职场             ++i;    
C#读取大文件(三)_职场            }    
C#读取大文件(三)_职场            //将剩余的字节写入流    
C#读取大文件(三)_职场            int intResidual = intLength % intBlock;    
C#读取大文件(三)_职场            if(intResidual > 0)    
C#读取大文件(三)_职场            {    
C#读取大文件(三)_职场             strSelect = "declare @content varbinary(16) "; //再sql中声明获取目标p_w_picpath列内容的句柄变量    
C#读取大文件(三)_职场             strSelect += strTargetHandle; //获取句柄    
C#读取大文件(三)_职场             //锁定并读取指定长度的数据    
C#读取大文件(三)_职场             strSelect += " readtext " + strTableName + "." + strColumnName + " @content @start @count HOLDLOCK";    
C#读取大文件(三)_职场             bytContent = new byte[intResidual];    
C#读取大文件(三)_职场             sqlcmd.Parameters["@start"].Value = intCount * intBlock;    
C#读取大文件(三)_职场             sqlcmd.Parameters["@count"].Value = intResidual;    
C#读取大文件(三)_职场             sqlcmd.CommandText = strSelect;    
C#读取大文件(三)_职场             bytContent = sqlcmd.ExecuteScalar() as byte[];    
C#读取大文件(三)_职场             fs.Write(bytContent,0,intResidual);