欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用ADO.NET操作数据库

程序员文章站 2022-06-28 12:38:19
如有转载的请注明出处!蟹蟹 1.1使用对象连接OLE DB 数据源 OLE DB 数据源包含具有OLE DB 驱动程序的任何数据源,如SQL Server、Access、Excel、Oracle等。 OLE DB 数据源连接字符串必须提供provide属性及其值。 语法格式为 下面以一个案列学习一下 ......

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

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数据源操作类这样会简化一些重复的操作(这里没用到,但可以为日后用提供方便),你只需要把他引入到你的后

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

使用ADO.NET操作数据库使用ADO.NET操作数据库

    

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

 

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

使用ADO.NET操作数据库

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

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

在数据库上创建一个表

使用ADO.NET操作数据库使用ADO.NET操作数据库

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

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

使用ADO.NET操作数据库

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

  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操作数据库