ASP.NET通过存储过程上传Excel中的内容到Oracle数据库

web.config中的内容:

  1. <?xml version="1.0"?>
  2. <!-- 
  3.     注意: 除了手动编辑此文件以外,您还可以使用 
  4.     Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
  5.      “网站”->“Asp.Net 配置”选项。
  6.     设置和注释的完整列表在 
  7.     machine.config.comments 中,该文件通常位于 
  8.     /Windows/Microsoft.Net/Framework/v2.x/Config 中
  9. -->
  10. <configuration>
  11.     <appSettings/>
  12.     <connectionStrings>
  13.         <add name="ExcelConnection" connectionString="Extended Properties=Excel 8.0;Provider=Microsoft.Jet.OLEDB.4.0"/>
  14.         <add name="OracleConnection" connectionString="Data Source=orcl_202.201.244.121;Persist Security Info=True;User ID=scott;Pwd=sde;Unicode=True" providerName="System.Data.OracleClient"/>
  15.     </connectionStrings>
  16.     <system.web>
  17.         <!-- 
  18.             设置 compilation debug="true" 将调试符号插入
  19.             已编译的页面中。但由于这会 
  20.             影响性能,因此只在开发过程中将此值 
  21.             设置为 true
  22.         -->
  23.         <compilation debug="true">
  24.             <assemblies>
  25.                 <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
  26.         <!--
  27.             通过 <authentication> 节可以配置 ASP.NET 使用的 
  28.             安全身份验证模式,
  29.             以标识传入的用户。 
  30.         -->
  31.         <authentication mode="Windows"/>
  32.         <!--
  33.             如果在执行请求的过程中出现未处理的错误,
  34.             则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
  35.             开发人员通过该节可以配置
  36.             要显示的 html 错误页
  37.             以代替错误堆栈跟踪。
  38.         <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
  39.             <error statusCode="403" redirect="NoAccess.htm" />
  40.             <error statusCode="404" redirect="FileNotFound.htm" />
  41.         </customErrors>
  42.         -->
  43.     </system.web>
  44. </configuration>

前台代码:

  1. <body>
  2.     <form id="form1" runat="server">
  3.     <div>
  4.         <input id="FileUpLoad" type="file" runat="server" />
  5.         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" Width="72px" /><br />
  6.         测试是否能读出Excel中的数据<br />
  7.         <asp:GridView ID="GridView1" runat="server">
  8.         </asp:GridView>        
  9.         </div>
  10.     </form>
  11. </body>

后台代码:

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.Data.OracleClient;
  11. using System.Data.OleDb;
  12. public partial class _Default : System.Web.UI.Page 
  13. {
  14.     protected void Page_Load(object sender, EventArgs e)
  15.     {
  16.     }
  17.     protected void Button1_Click(object sender, EventArgs e)
  18.     {
  19.         string filePath="";
  20.         if (FileUpLoad.PostedFile.FileName == "")
  21.         { 
  22.             Response.Write("<Script Language=JavaScript>alert('请选择要上传的文件!');</Script>");
  23.         }
  24.         else
  25.         {
  26.             filePath=FileUpLoad.PostedFile.FileName;
  27.             string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["ExcelConnection"].ConnectionString + ";Data Source = "+filePath+";";//Excel的连接字符串
  28.             OleDbConnection myConn = new OleDbConnection(strCon);//创建一个OLEDBC的连接,即建立Excel的连接
  29.             myConn.Open();//打开Excel的连接,得到一个数据集
  30.             DataSet myDataSet = new DataSet();
  31.             string sqlExcel = "Select * From [Sheet1$]";
  32.             //OleDbCommand myCommand = new OleDbCommand(sqlExcel, myConn);
  33.             //OleDbDataAdapter myAdapter = new OleDbDataAdapter();
  34.             //myAdapter.SelectCommand = myCommand;
  35.             OleDbDataAdapter myAdapter = new OleDbDataAdapter(sqlExcel, myConn);
  36.             myAdapter.Fill(myDataSet, "StyleSheet");
  37.             myAdapter.Dispose();
  38.             DataTable dt = myDataSet.Tables["StyleSheet"];
  39.             myConn.Close();//关闭数据库连接
  40.             GridView1.DataSource = dt.DefaultView;//测试代码,用来测试是否能读出Excel上面的数据
  41.             GridView1.DataBind();
  42.             //Oracle数据库连接
  43.             DataView myView = new DataView(dt);
  44.             string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
  45.             OracleConnection conn = new OracleConnection();
  46.             conn.ConnectionString = strConn;
  47.             OracleCommand cmd = conn.CreateCommand();
  48.             cmd.CommandType = CommandType.StoredProcedure;
  49.             cmd.CommandText = "INSERT_USERSDB";
  50.             int count = 0;//记录出错的条数
  51.             try
  52.             {
  53.                 foreach (DataRowView myDrv in myView)
  54.                 {
  55.                     count++;//要关闭上一次的Oracle连接
  56.                     if (conn.State.ToString() != "Closed")
  57.                         conn.Close();
  58.                     cmd.Parameters.Clear();//每一次到要清空所有的cmd参数
  59.                     //执行存储过程,获得参数
  60.                     OracleParameter paraUserID = cmd.Parameters.Add("p_userid", OracleType.VarChar);
  61.                     OracleParameter paraUserName = cmd.Parameters.Add("p_username", OracleType.VarChar);
  62.                     OracleParameter paraTitle = cmd.Parameters.Add("p_title", OracleType.VarChar);
  63.                     OracleParameter paraSal = cmd.Parameters.Add("p_sal", OracleType.VarChar);
  64.                     //表示是输出参数
  65.                     paraUserName.Direction = ParameterDirection.Input;
  66.                     paraUserID.Direction = ParameterDirection.Input;
  67.                     paraTitle.Direction = ParameterDirection.Input;
  68.                     paraSal.Direction = ParameterDirection.Input;
  69.                     //参数赋值
  70.                     paraUserID.Value = myDrv[0].ToString().Trim();
  71.                     paraUserName.Value = myDrv[1].ToString().Trim();
  72.                     paraTitle.Value = myDrv[2].ToString().Trim();
  73.                     paraSal.Value = myDrv[3].ToString().Trim();
  74.                     conn.Open();
  75.                     cmd.ExecuteNonQuery();//写入Oracle数据库                    
  76.                 }
  77.                 conn.Close();
  78.             }
  79.             catch
  80.             { 
  81.                 Page.Response.Write("alert('第"+count.ToString()+"条数据出错!');");
  82.             }
  83.         }
  84.     }    
  85. }

存储过程:

  1. CREATE OR REPLACE  PROCEDURE "SCOTT"."INSERT_USERSDB"  (p_userid 
  2.     usersdb.userid%type,
  3.  p_username usersdb.username%type,
  4.  p_title usersdb.title%type,
  5.  p_sal usersdb.sal%type)
  6. as
  7. begin
  8. insert into usersdb values(p_userid,p_username,p_title,p_sal);
  9. end insert_usersdb;

Excel表中的内容:

  UserID UserName TITLE     SAL
7369 SMITHCLERK800
7499 ALLENSALESMAN1600
7521 WARDSALESMAN1250
7566 JONESMANAGER2975
7654 MARTINSALESMAN1250
7698 BLAKEMANAGER2850

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC ,可以将数据库存储过程转化为函数内的方式来处理数据。下面是一种将存储过程转换为函数的方法: 1. 在你的数据库创建一个函数,以替代存储过程。函数可以使用 SQL 语句来实现相同的逻辑,并返回结果。 2. 在你的 ASP.NET MVC 项目,可以使用 Entity Framework 或者 ADO.NET 来调用该函数并获取结果。 下面是一个示例,使用 Entity Framework 来调用数据库函数: 1. 在数据库创建一个函数: ```sql CREATE FUNCTION YourFunctionName (@Parameter1 INT, @Parameter2 VARCHAR(50)) RETURNS INT AS BEGIN DECLARE @Result INT -- 实现函数逻辑... -- 使用 SELECT 语句返回结果 RETURN @Result END ``` 2. 在你的 ASP.NET MVC 项目使用 Entity Framework 调用该函数: ```csharp public class YourDbContext : DbContext { public YourDbContext() : base("YourConnectionString") { } // 声明用于调用函数的方法 [DbFunction("YourNamespace", "YourFunctionName")] public static int YourFunction(int parameter1, string parameter2) { throw new NotSupportedException(); } } public class YourController : Controller { private YourDbContext db = new YourDbContext(); public ActionResult YourAction() { // 调用函数 int result = YourDbContext.YourFunction(123, "abc"); // 处理函数返回结果 return View(); } } ``` 在上面的示例,你需要将 "YourFunctionName" 替换为你在数据库创建的函数的名称,并根据需要添加参数和处理函数的返回结果。 请注意,这只是一种在 ASP.NET MVC 使用 Entity Framework 调用数据库函数的方法之一。你还可以使用其他 ORM 工具或直接使用 ADO.NET 来调用函数。根据你的实际需求和数据库配置,选择适合的方法来处理数据库函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值