使用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
總結
以上是生活随笔為你收集整理的使用ADO.NET操作数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在EF中使用SQL执行简单高效的增删查操
- 下一篇: 静态类型检查—Flow入门