使用对象连接OLE DB 数据源

1.1使用对象连接OLE DB 数据源

OLE DB 数据源包含具有OLE DB 驱动程序的任何数据源,如SQL Server、Access、Excel、Oracle等。

OLE DB 数据源连接字符串必须提供provide属性及其值。

语法格式为

1
OleDbConnection mycon =  new  OleDbConnection(provider=提供者;DataSource=“文件路径”);

 下面以一个案列学习一下

(1)使用OleDb方式读取Excel里的数据,并将Excel里的数据导入SqlServer数据库里

 新建一个空白网站命名DataBindDemo,添加一个web窗体命名为ReadExcel.aspx;添加一个ASP.NET文件夹里的App_Data文件用来存放Excel表;

添加一个OleDBHelper.cs,OleDB数据源操作类这样会简化一些重复的操作(这里没用到,但可以为日后用提供方便),你只需要把他引入到你的后

台代码里就行了,很方便实用。

    

1.ReadExcel.aspx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ Page Language= "C#"  AutoEventWireup= "true"  CodeBehind= "ReadExcel.aspx.cs"  Inherits= "DataBindDemo.ReadExcel"  %>
 
<!DOCTYPE html>
 
<html xmlns= "http://www.w3.org/1999/xhtml" >
<head runat= "server" >
<meta http-equiv= "Content-Type"  content= "text/html; charset=utf-8" />
     <title></title>
</head>
<body>
     <form id= "form1"  runat= "server" >
     <div>
     
         <asp:Button www.ysgj1688.com ID= "Button1"  runat= "server"  OnClick= "Button1_Click"  Text= "导入"  />
     
     </div>
     </form>
</body>
</html>

    2.ReadExcel.aspx.www.baohuayule.net  cs后台代码

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.www.duobaoyule2.cn  WebControls;
using System.Data.OleDb;
using System.Data;
using System.Data.SqlClient;

namespace DataBindDemo
{
    public partial class ReadExcel : System.Web.UI.Page
    {
        protected www.douniu178.com  void Page_Load(object sender, EventArgs e)
        {
            string strConn = string.Format(@"Provider=Microsoft.Jet.Oledb.4.0;
                Data Source={0};Extended Properties='www.feifanyule.cn/ Excel 8.0;HDR=Yes;IMEX=1;'", 
                "|DataDirectory|test.xls");
       /*相当于连接字符串
   后面那个是Excel标的相对路径一定要写对,不过这里也可以改成绝对路径;直接访问你的电脑上的表,
    路径要写对,例如:Data Source=D:/test.xls;
   针对如果上连接字符串 对相关属性进行说明如下:"HDR=Yes;”指示第一行中包含列名,
   而不是数据,"IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取。
     Excel 8.0 针对Excel2000及以上版本,Excel5.0 针对Excel97。*/
            OleDbConnection conn = new OleDbConnection(strConn); //连接上Excel表
            try//进行异常处理
            {
                conn.Open();
                OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [stuInfo$]",conn); //执行sql语句,找到表名为stuInfo的表
                DataTable dt = new DataTable();//创建一个存储数据的表
                adapter.Fill(dt);//将数据填充到datatable中
                this.Session["dt"] = dt;//将数据存储在网站
                Response.Write(dt.Rows[0]["stuNO"]+":"+dt.Rows[0]["stuName"]);//这样写是一行一行的输出,这里的["stuNO"]要跟Excel表中的对应
                Response.Write(dt.Rows[1]["stuNO"] + ":" + dt.Rows[1]["stuName"]);
                Response.Write(dt.Rows[2]["stuNO"] + ":" + dt.Rows[2]["stuName"]);
                conn.Close();
            }
            catch(Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
        //加载到数据库里
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable dt = this.Session["dt"] as DataTable;//调用在网站几Session存储的数据
            string strConn = "Data Source=.;Initial Catalog=Ole_Dbo;User ID=;Password=";//连接自己的sqlserver数据库
            SqlConnection conn = new SqlConnection(strConn);
            try
            {
                conn.Open();
                SqlBulkCopy bulk = new SqlBulkCopy(conn); //批量加载
                bulk.DestinationTableName = "stuInfo"; //服务器目标表(数据库)表名
                bulk.BatchSize = dt.Rows.Count; //每一批次中的行数
                bulk.ColumnMappings.Add("stuNO", "stuNO"); //数据源中表的列名与目标表中的列名的对应关系
                bulk.ColumnMappings.Add("stuName", "stuName");
                bulk.WriteToServer(dt); //将DataTable 表中的数据复制到目标表中
                conn.Close();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
    }
}
复制代码

 

     到这步已经可以读取表中的数据了    

将Excel表里的数据加载到数据库中

在页面里加一个按钮并设置按钮事件,代码.ReadExcel.aspx.cs里的按钮事件

在数据库上创建一个表

在代码里连接好自己的数据库,代码已经在按钮事件当中

运行ReadExcel.aspx,点击导入按钮,这时数据就导入到数据库表中了

强调:表中一定要设置主键,如果不设置的话,点击多次按钮,会在表中添加重复记录

  3.OleDBHelper.cs类(可以以后作为备用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;
using  System.Data;
using  System.Data.OleDb;
 
namespace  DataBindDemo.DBHelper
{
     /// <summary>
     /// OleDB数据源操作类
     /// </summary>
     public  class  OleDBHelper
     {
         private  string  strConn;
           private  OleDbConnection conn =  null ;
           /// <summary>
           /// 构造数据源操作类
           /// </summary>
           /// <param name="sourceName">数据源文件名</param>
           public  OleDBHelper( string  sourceName)
           {
               if  (sourceName !=  "" )
               {
                   strConn =  string .Format( "Provider=Microsoft.Jet.Oledb.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'" ,sourceName);
                   conn =  new  OleDbConnection(strConn);
               }
           }
           private  void  OpenConn()
           {
               if  (conn !=  null  && conn.State == ConnectionState.Closed)
               {
                   conn.Open();
               }
           }
           private  void  CloseConn()
           {
               if  (conn !=  null  && conn.State == ConnectionState.Open)
               {
                   conn.Close();
               }
           }
           private  OleDbCommand CreateCommand( string  cmdText,  string [] param,  object [] values)
           {
               OleDbCommand myCmd =  new  OleDbCommand(cmdText, conn);
               for  ( int  i = 0; i < param.Length; i++)
               {
                   myCmd.Parameters.AddWithValue(param[i], values[i]);
               }
               return  myCmd;
           }
           /// <summary>
           /// 根据命令语句返回数据集
           /// </summary>
           /// <param name="cmdText">命令语句</param>
           /// <param name="param">参数数组,若没有参数可以设置为空</param>
           /// <param name="values">参数值数组,只有当param不为空时有效</param>
           /// <returns></returns>
           public  DataTable FillDataTable( string  cmdText,  string [] param,  object [] values)
           {
               OpenConn();
               OleDbCommand cmd;
               if  (param !=  null )
               {
                   cmd = CreateCommand(cmdText, param, values);
               }
               else
               {
                   cmd =  new  OleDbCommand(cmdText, conn);
               }
               OleDbDataAdapter adapter =  new  OleDbDataAdapter(cmd);
               DataTable dt =  new  DataTable();
               adapter.Fill(dt);
               CloseConn();
               return  dt;
           }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值