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);