使用ADO.NET操作数据库

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

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[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类(可以以后作为备用)

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

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

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

原文地址:https://www.cnblogs.com/kalezhangtao/p/9029430.html

时间: 2024-08-29 12:51:55

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

ado.net操作数据库

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace 操作数据库 { class Program { static void Main(string[] args) { //1.造一个连接字符串 string connstring = "ser

ADO.Net操作数据库的方式

1.使用数据提供程序执行sql或者ddl语句操作数据库. 2.使用oledb操作数据库 3.使用odbc操作数据库 4.使用DataSet操作数据库 前面3种方式都无法避免要使用sql语句,对不同种类数据库要提供不同的sql语句. 第4种可以统一应对,只要遵守以下约定就不需要sql语句. 1.每次操作时要取一个表.不论select.delete.update,先取表到DataSet,然后遍历DataSet,操作相应的记录. 2.insert操作使用 SQL CommandBuilder完成. 该

ado.net操作数据库常用方法集锦

ado.net中常用数据库操作方法: (1)SqlDataReader(数据库只读操作) 提供一种从 SQL Server 数据库读取行的只进流的方式,它既然提供只读属性,那么显然当只需要执行读取操作的时候执行,在执行select语句的时候很有必要, 因为,就执行效率而言,DataReader的效率是最高的.但是,它存在的弊端是,当SqlDataReader没有关闭之前,数据库会一直保持open状态,所以在使用 SqlDataReader时,使用完毕应该马上调用close()方法,当然,另一方面

ASP.NET总结ADO.NET操作数据库五大对象

1.Connection对象主要提供与数据库的连接功能 配置web.config文件 <appSettings> <add key="ConnectionString" value="Server=10.136.*.*;database=MTL;uid=sa;pwd=sa;"/> </appSettings> 创建获取配置节的连接字符串 public SqlConnection GetSqlConnection() {   str

减少重复工作,通过泛型、反射写一个通用的Ado.net操作数据库的简单orm底层

创建一个基类BaseEntity: public class BaseEntity { [PrimaryKey] public int Id { get; set; } public DateTime CreateTime { get; set; } public Status Status { get; set; } public string Remark { get; set; } } /// <summary> /// 自增主键标识 /// </summary> publi

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

参考: MSDN数据访问编程 (MFC/ATL): https://msdn.microsoft.com/zh-cn/library/kd4ck1tt.aspx?f=255&MSPPError=-2147217396 ado方式操作数据库封装类的使用范例: http://download.csdn.net/detail/xianglitian/2383423 使用ADO封装类的数据库程序开发实例: http://wenku.baidu.com/link?url=A3g4_Ucz1RuijQMZ8

用ADO操作数据库的方法步骤(ZT)

http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_ConnectionPtr接口返回一个

用ADO操作数据库的方法步骤

用ADO操作数据库的方法步骤 学习ADO时总结的一些经验 - 技术成就梦想 - 51CTO技术博客 http://freetoskey.blog.51cto.com/1355382/989218 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_Connecti

VC++中使用ADO方式操作ACCESS数据库

ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API.DAO.RDO都要容易使用,并不失灵活性.本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码.为了使读者朋友都能测试本例提供的代码,我们采用Access数据库,您可以直接在我们提供的示例代码中找到