Web模式下C#完成Oracle数据库与Excel表数据交换的解决方案

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:pisces_ww
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:基于web方式BS应用模式下,使用C#.net编程工具实现oracle数据库记录与Excel工作表数据交换的解决方案及实现案例。
  关键词:c#;BS模式;Excel;导入导出;应用
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)06-11492-02
  随着计算机网络技术的发展,INTERNET技术正带领信息科技进入新的信息时代,以Web为中心进行构建,采用B/S结构开发信息系统已经成为潮流。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装racle、Sybase、Informix或 SQL Server等数据库。浏览器就可以通过Web Server 同数据库进行数据交互。
  B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。但它的缺点是打印和Excel表的数据交换不如C/S(Client/Server)模式方便,在水晶报表Crystal Reports下,C/S模式直接具有导出Excel表的功能,可在B/S的Web模式下就显得很困难。本文在此通过案例介绍一种基于Web使用C#.NET编程完成Oracle数据库与Excel表数据交换的解决方案。
  
  1 开发工具介绍及设计思想
  1.1微软.Net技术
  Microsoft .NET 是微软公司的一组软件技术,用来连接信息、人、系统和各种设备。它通过使用 Web Services 技术来获得软件的高度集成。除了将小型的、分散的、构建模块应用互相连接起来,还将 Internet 上的更大应用连接起来。目前随着互联网上各种标准协议以及 .NET框架的日益成熟,开发互联网应用的首推工具为微软.NET框架。C#是微软基于.net框架由C和C++派生而来的一种“简单、流行、面向对象、类型安全”的程序设计语言,C#意在综合Visual Basic的高效率和C++的强大功能。C#将是完全依靠Windows的最完美的产物。C#(发音为“C-Sharp”)既保持了C++中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。因此我们选择C#.net作为开发工具。
  1.2Oracle数据库技术
  Oracle数据库是目前世界上应用较广的大型关系数据库产品之一,Oracle 8i将Java虚拟机完全集成于自身数据库之中,通过对Java开发环境的全面支持,成为第一款具有容错功能的可伸缩Java部署平台,能给互联网的应用软件提供一个更加完善的平台。对于浏览器方式的应用,用户端只需用标准的浏览器,就可以访问数据,进行交易处理,而不需专门的用户端程序,尤其适用于大量移动分布式用户群。Oracle还提供了一个工具Oracle WebDB,可以用来建立、部署和监控网络数据库应用和网站,它有一组基于浏览器HTML工具,提供快速简便的方式访问Oracle数据库,能够用标准的Web浏览器显示,可以在任何与网络相连的地方通过浏览器开发、部署、管理和配置网上应用。
  1.3设计思想
  该案例的目的是:将存放在本地(客户浏览器端)的Excel文件(扩展名为.xls)中的单元格数据记录导入到远程非本地(主机服务器端)Oracle数据库服务器中形成数据记录;然后在网页中使用DataGrid显示出来;最后再将DataGrid显示的数据记录导出到本地,形成Excel格式的.xls文件。
  在设计过程中,我们采用的过程和方式是:(1)在oracle数据库中建立与Excel文件相应的对照字段;(2)使用c#编程命令将Excel文件采用上传的方式上传到服务器上指定的目录;(3)将此上传的Excel格式文件导入到Oracle数据库;(4)能使用DataGrid显示浏览出来;(5)使用c#编程命令书写程序将DataGrid中显示的Oracle数据库中的记录导出为Excel格式文件存放在本地,考虑到DataGrid中数据显示有分页的可能,我们导出时使用数据集Dataset方式导出,分导出本页和全部页两种。
  
  2 开发实例及程序源码
  2.1上传Excel前的准备工作:
  (1)在oracle数据库中建立如下基因临时表(图1)的数据库表及字段。
  图1 基因临时表
  (2)整理一下如下的Excel表,建立与之数据库相对应的字段。
  2.2界面和程序设计:
  2.2.1上传设计:
  (1) Web界面:如下(图2)
  图2
  (2)上传程序代码:
  private void btUpload_Click(object sender, System.EventArgs e){
  System.IO.DirectoryInfo dirfiles;
  System.IO.FileInfo[] files;
  dirfiles= new DirectoryInfo(Server.MapPath(@".\ExcelFiles\"));
  if(UploadFile.PostedFile!=null && UploadFile.PostedFile.FileName.Length>0)
  {string destDir=Server.MapPath(@".\ExcelFiles\");
  try
  {string fileName=Path.GetFileName(UploadFile.PostedFile.FileName);
  UploadFile.PostedFile.SaveAs(Path.Combine(destDir,fileName));
  Response.Redirect("RemoteFileManager.aspx"); }}}
  2.2.2导入程序设计:
  (1) Web界面:如下(图3)
  图3
  (2)程序代码如下:
  private void Excel_to_Oracle_Click(object sender, System.EventArgs e)
  {#region将EXCEL表数据读入DataSet
  string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ddlFiles.SelectedValue+";Extended Properties=Excel 8.0;";
  OleDbConnection oleconn = new OleDbConnection(strConn);
  string cmd="SELECT ";
  cmd+=" "+ddla.SelectedItem.Text.ToString().Trim().ToUpper()+" , ";
  cmd+=" "+ddlb.SelectedItem.Text.ToString().Trim().ToUpper()+" , ";
  cmd+=" "+ddlc.SelectedItem.Text.ToString().Trim().ToUpper();
  cmd+=" FROM ["+TextBox1.Text+"$]";
  OleDbDataAdapter myCommandPart = new OleDbDataAdapter(cmd,strConn);
  DataSet myDataSet1 = new DataSet();
  myCommandPart.Fill(myDataSet1);
  #endregion
  #region 将DataSet中数据导入数据库StringBuilder
  objConn.Open();
  yutrans = objConn.BeginTransaction();
  try
  {OracleCommand insCommand=new OracleCommand();
  insCommand.Connection=objConn;
  insCommand.Transaction=yutrans;
  for(int i=0;i  {insertRowCount++;
  StringBuilder sbExcel = new StringBuilder("");
  sbExcel.Append("INSERT INTO hlatemp(cust_code,hl_type,input_time,a,b,c)");
  sbExcel.Append("VALUES ('");
  sbExcel.Append(Session["session_cust_code"].ToString().Trim ().ToUpper ());
  sbExcel.Append("','");
  sbExcel.Append(ddl_hl_type.SelectedItem.Text.ToString().Trim ().ToUpper ());
  sbExcel.Append("',");
  sbExcel.Append("TO_DATE('");
  sbExcel.Append(tbNowDate.Text);
  sbExcel.Append("','YYYY-MM-DD HH24:MI:SS')");
  sbExcel.Append(",'");
  insCommand.CommandText=sbExcel.ToString();
  insCommand.ExecuteNonQuery();}
  yutrans.Commit();
  if (objConn.State.ToString().Equals ("Open")) objConn.Close();}
  #endregion
  #endregion}
  2.2.3 导出程序设计:
  (1)Web界面设计:如下(图4)
  图4
  (2) 导出全部页Excel程序代码如下:
  private void btn_all_datagrid_to_Excel_Click(object sender, System.EventArgs e)
  {OracleDataAdapter adexcel = new OracleDataAdapter();
  OracleCommand oracleSelectCommand2 = new OracleCommand();
  adexcel.SelectCommand =oracleSelectCommand2;
  oracleSelectCommand2.CommandText="SELECT * FROM HLATEMP where
  CUST_CODE='"+Session["session_cust_code"]+"' order by sn ";
  oracleSelectCommand2.Connection =objConn;
  DataSet dsexcel=new DataSet ();
  dsexcel.Clear ();
  adexcel.Fill(dsexcel);
  Datagrid2.DataSource =dsexcel;
  Datagrid2.DataBind();
  Response.ContentType = "application/vnd.ms-excel";
  Response.Charset = "";
  this.EnableViewState = false;
  StringWriter sw = new StringWriter();
  HtmlTextWriter hw = new HtmlTextWriter(sw);
  Datagrid2.RenderControl(hw);
  Response.Write(sw.ToString());
  Response.End(); }
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:高等职业院校培养的是高技能人才,教学内容和方法直接影响着高技能人才培养的质量,如何采用一套简单易用有效的办法来开发教学内容,长期以来一直困扰着广大教师。本文介绍了CBE/DACUM的基本知识,并采用CBE/DACUM的理论和方法对微机组装与维护课程技能教学进行了研究,详细介绍了课程开发的每一步骤,对高职院校各课程教学内容的开发均有一定借鉴作用。  关键词:CBE;DACUM;技能教学  中图
期刊
摘要:Linux操作系统的应用越来越广泛,但我国Linux人才还十分紧缺。本文结合本人多年讲授Linux的教学经验,就高校开展Linux的课堂教学方法和教学内容作出了一种全新的探讨。  关键词:Linux;操作系统;教学方法  中图分类号:G642文献标识码:A文章编号:1009-3044(2007)05-11477-02    1 引言  Linux是一种自由的、源代码公开的多用户多任务操作系统
期刊
摘要:主要探讨几种在SQL Server数据库中存取BLOB数据的方法,并结合实例介绍不利用开发工具,在SQL Server数据库中对BLOB数据进行直接存取的方法。  关键词:BLOB数据;SQL Server;存取  中图分类号:TP392 文献标识码:A 文章编号:1009-3044(2007)06-11500-02    1 引言  目前,人们对于文本、声音、图片、视频等数据的存取,需求越
期刊
摘要:文章分析了SSH 技术及其工作流程,详细介绍了基于SSH来实现CDMA1X核心网安全登陆的具体应用。  关键词:SSH;认证  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)06-11524-02    1 前言  CDMA 1X分组网的维护人员对核心路由器、交换机等设备进行管理和日常维护时,通常需远程登陆。传统的远程登陆程序如Telnet,rlogin等网络服
期刊
摘要:目前数据库的应用非常普遍,在应用程序的开发过程中,经常会涉及到访问数据库。Java使用JDBC技术进行数据库的访问。查询是数据库的操作中较为频繁的一种操作,返回的结果有时可能是很多条记录的结果集,用户在浏览和处理时不方便,常常会用到分页处理功能。  关键词:JDBC数据库;驱动程序;结果集  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)06-11511-01 
期刊
摘要:数据ETL(Data Extraction,Transformation and Loading)主要用来实现异构多数据源的数据集成,是数据仓库、数据挖掘以及商业智能等技术的基石,具有数据抽取、数据转换和数据装载功能。本文综述了ETL发展的背景、目前广泛研究的领域,论述了ETL在异构数据源集成和脏数据的检测与解决两方面面临的挑战,指出ETL将呈现出通用化、高效化、智能化三大发展趋势。  关键
期刊
摘要:文章主要介绍了一个开源的网络课程管理系统—Moodle的特点、架设与管理,分析了其应用前景。  关键词:课程管理系统;Moodle;网络课程;虚拟学习  中图分类号:G434文献标识码:A文章编号:1009-3044(2007)06-11508-03    1 引言  随着校园网的深入运用,广大教师、学生对网络学习这种新的学习模式在逐步尝试和适应,如何选择一个合适的网络教学平台,来组织学校的
期刊
摘要:计时器TIMER是Visual FoxPro(简称VFP)的新增控件。它提供了计时功能,即每隔一段指定的时间间隔就响应一次TIMER事件,执行相应的程序代码,用于控制某些进程。本文给出计时器控件的几个的用法。  关键词:TIMER;控件;表单; 属性;事件代码  中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)06-11515-02     1 序言  VFP作为
期刊
摘要:分析了数据库分页显示的解决方案,详细探讨了使用数据库连接池技术,按照MVC的开发模式构建数据库分页显示的应用架构,并给出了程序实现的主要代码,具有很好的通用性。  关键词:MVC;数据库连接池;JSP;数据库分页  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)06-11502-02    1 引言  在WEB应用系统开发的过程中,必然会涉及到数据库的查询和显示
期刊
摘要:随着现代科技的发展,计算机已被广泛应用到各个领域,人们已经逐渐日益依赖计算机而工作,与此同时计算机的安全也在科技进步面临着巨大挑战,网络攻击已经对现代办公自动化造成了很大的威胁,所以信息安全已经破在眉睫,本文通过DOS 攻击的原理进行了分析和研究,讲述了几种常见的DOS攻击方法,并通过DOS的输入流、和输流的数量对DOS攻击进行检测,判断是否受到DOS攻击,从而保护我们的信息安全。  关键词
期刊