如有转载的请注明出处!蟹蟹

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

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

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

语法格式为

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

<%@ 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 ID="Button1" runat="server" OnClick="Button1_Click" Text="导入" /> </div>
</form>
</body>
</html>

2.ReadExcel.aspx.cs后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Data;
using System.Data.SqlClient; namespace DataBindDemo
{
public partial class ReadExcel : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strConn = string.Format(@"Provider=Microsoft.Jet.Oledb.4.0;
Data Source={0};Extended Properties='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[]["stuNO"]+":"+dt.Rows[]["stuName"]);//这样写是一行一行的输出,这里的["stuNO"]要跟Excel表中的对应
Response.Write(dt.Rows[]["stuNO"] + ":" + dt.Rows[]["stuName"]);
Response.Write(dt.Rows[]["stuNO"] + ":" + dt.Rows[]["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类(可以以后作为备用)

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

  诶终于结束了!!累死小编了,这该死的程序员

如果你觉得不错的话,打赏一下小编吧

使用ADO.NET操作数据库的更多相关文章

  1. Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  2. Win10 64位系统ADO方式操作数据库失败解决方法

    VC操作Access数据库一般通过ODBC.ADO.DAO等方式,但在我的Win10 64位操作系统中,通过ADO方式操作数据库会失败,无法读取数据.解决方法:1.首先确保Win10操作系统ado目录 ...

  3. ADO.Net操作数据库的方式

    1.使用数据提供程序执行sql或者ddl语句操作数据库. 2.使用oledb操作数据库 3.使用odbc操作数据库 4.使用DataSet操作数据库 前面3种方式都无法避免要使用sql语句,对不同种类 ...

  4. ADO.net操作数据库

    今天整理硬盘,发现2年前开始着手开始学习C#的学习日记.陆续整理,一是自己的知识梳理梳理,二是希望与大家多多交流,能给初学者带来一定帮助,当然是更高兴的啦. 断线对象 另一类是与数据源无关的断线对象, ...

  5. ADO.NET操作数据库(一)

    ---恢复内容开始--- [1]ADO.Net简介2015-12-07-20:16:05 ADO.Net提供对Microsoft SQL Server数据源以及通过OLE DB和XML公开的数据源的一 ...

  6. ADO.NET 操作数据库 --- 01 简单封装

    由于我是Java转的C#开始的时候就用的NHihernate,和EF 对ADO.NET使用较少,现在封装一个ADO.NET的工具类来实现数据库的操作,比较简单,望大家多多提意见. 如果大家有什么学习中 ...

  7. C# ADO.NET操作数据库 SqlHelp.cs类

    刚开始练习ADONET的时候,练习的一个SQLHelp.cs  数据库操作类,很简单,但是也很实用 using System; using System.Collections.Generic; us ...

  8. MFC,ADO方式实现数据库操作

    参考: MSDN数据访问编程 (MFC/ATL): https://msdn.microsoft.com/zh-cn/library/kd4ck1tt.aspx?f=255&MSPPError ...

  9. 就这么 来ADO.net类操作数据库

    使用ADO.net操作数据库其实也是很简单,而且使用频率蛮高的一种方式.话不多说,上代码才更容易理解. 首先,先要引入数据库操作相关的命名空间,这样才能使用下面的代码 //数据库连接引用的命名空间 u ...

随机推荐

  1. Android启动过程分析

    Android系统启动过程 首先看一张Android框架结构图 Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用. 启动的过程如下图所示:(图片来自网上, ...

  2. HTML5进阶(三)HBuilder实现软件自动升级(优化篇)

    HBuilder实现软件自动升级(优化篇) 前言 受前篇博客<HTML5进阶(二)HBuilder实现软件自动升级>(点击查看详情)的影响,测试过程中发现APP自动更新还是存在问题,第一次 ...

  3. 彻底搞清楚 RxJava 是什么东西

    其实从rxjava14年出现到现在,我是去年从一个朋友那里听到的,特别是随着现在app项目越来越大,分层越来越不明确的情况下,rxjava出现了,以至于出现了rxandroid.其实如果你了解观察者模 ...

  4. Xcode 下cocos-2dx 环境搭建

    一.Cocos2d-x简介 Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的,这是一个C++ Cocos2d-iPhone项目的版本. Cocos2d-X发展的重点是围绕Cocos ...

  5. 【Qt编程】Qt版扫雷

    学习要学会举一反三.在以前的<用matlab扫扫雷>一文中,我用matlab简单的编写了一个扫雷小程序.当然,与Windows自带的扫雷程序自然是不敢相提并论.今天我就用c++来写个扫雷程 ...

  6. android自定义view之---组合view

    最近工作比较轻松,没有什么事情干,于是进入高产模式(呃....高产似xx). 应该很多童鞋对自定义view这个东西比较抵触,可能是听网上说view比较难吧,其实自定义view并没有很难 自定义view ...

  7. kettle文件自动化部署(shell脚本执行):命令行参数传入

    shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...

  8. SpriteBuilder物理对象的父子关系

    注意:打开物理使能(Physics-enabled)的节点忽略他们的父节点关系. 这意味着,一个物理使能的子节点不会随着其父节点移动. 物理引擎对于节点父子关系这个概念毫不知情,因此单独的对待所有物理 ...

  9. CMake命令行添加编译参数

    CMake命令行添加编译参数 学习自 coroserver 例程: https://github.com/windoze/coroserver coroserver 是一个应用 Boost.Asio ...

  10. PHP获取指定地区的天气

    在开发网站的时候用到天气查询,由于是基于Wordpress的 所以有很多限制,先建一个[weather.php]的文件,然后看代码: <?php //获取天气 $url = 'http://m. ...