自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)的操作

開(kāi)發(fā) 后端
ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)的操作是什么呢?具體的實(shí)現(xiàn)又是如何呢?本文就向你介紹。

ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)是如何實(shí)現(xiàn)的呢,前提是ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)的字段在表里都有,不然會(huì)出現(xiàn)錯(cuò)誤。

ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)類文件:

  1. using System.Data.OleDb;  
  2. using System.Data.SqlClient;  
  3.  
  4. public class ExcelToSQL  
  5. {  
  6.         public SqlConnection sqlconnew SqlConnection("連接字符串");        //創(chuàng)建SQL連接  
  7.     public SqlCommand sqlcom;          //創(chuàng)建SQL命令對(duì)象  
  8.  
  9.  
  10.     public ExcelToSQL()  
  11.      {  
  12.                if (sqlcon.State.ToString() == "Open")  
  13.              sqlcon.Close();  
  14.      }  
  15.     public int ImportSql(string excelPath, string tableName)  //導(dǎo)入的Excel的路徑,數(shù)據(jù)庫(kù)里的表名  
  16.      {  
  17.         if (!TableExist(tableName)) //表名是否存在  
  18.             return (int)ImportState.tableNameError;  
  19.  
  20.          DataTable dt = ExcelToDataTable(excelPath);  
  21.         if (dt == null)  
  22.         {  
  23.             return (int)ImportState.excelFormatError;  
  24.         }  
  25.          ArrayList tableField = GetTableField(tableName);   //表格的列名稱  
  26.  
  27.         string columnName = "ID,"//Excel里的列名,增加一個(gè)ID列,如果ID自動(dòng)遞增則不需要增加ID列,只需要columnName=“”就可以了。  
  28.         for (int i = 0; i < dt.Columns.Count; i++)  
  29.          {  
  30.              columnName += dt.Columns[i].ColumnName + ",";  
  31.             string currentColumn = dt.Columns[i].ToString().ToUpper(); //當(dāng)前列名  
  32.             for (int j = 0; j < tableField.Count; j++)  
  33.              {  
  34.                 if (tableField[j].ToString().ToUpper() == dt.Columns[i].ToString().ToUpper())  
  35.                     break;   //跳出本層和上一層循環(huán),continue是跳出本層循環(huán),如果用continue,會(huì)繼續(xù)執(zhí)行j++  
  36.                 //Excel里的字段必須在Sql中都有  
  37.                 if ((tableField[j].ToString().ToUpper() != dt.Columns[i].ToString().ToUpper()) && j == tableField.Count - 1)  
  38.                     return (int)ImportState.fieldMatchError;  
  39.              }  
  40.          }  
  41.         int m = columnName.LastIndexOf(',');  
  42.          columnName = columnName.Remove(m);  //移除最后一個(gè)逗號(hào)  
  43.  
  44.          sqlcom = new SqlCommand();  
  45.          sqlcom.Connection = sqlcon;  
  46.          sqlcon.Open();  
  47.          sqlcom.CommandType = CommandType.Text;  
  48.  
  49.         for (int h = 0; h < dt.Rows.Count; h++)  
  50.          {  
  51.             string value = "'" + System.Guid.NewGuid().ToString() + "'" + ","//如果ID自動(dòng)遞增ID列不需要增加了,那么value的初始值只需要value=“”就可以了。  
  52.  
  53.             for (int k = 0; k < dt.Columns.Count; k++) //根據(jù)列名得到值  
  54.              {  
  55.                  value += "'" + dt.Rows[h][k].ToString() + "'" + ",";  
  56.              }  
  57.              value = value.Remove(0, 1);  
  58.             int n = value.LastIndexOf(',');  
  59.              value = value.Remove(n);    //移除最后一個(gè)逗號(hào)  
  60.              n = value.LastIndexOf("'");  
  61.              value = value.Remove(n);  
  62.  
  63.             try 
  64.              {  
  65.                 string sql = "insert into " + tableName + "(" + columnName + ") values('" + value + "')";  
  66.                  sqlcom.CommandText = sql;  
  67.                 string sss = sqlcom.ExecuteNonQuery().ToString();  
  68.              }  
  69.             catch (Exception err)  
  70.              {  
  71.                 string erroe = err.Message;  
  72.                 return (int)ImportState.dataTypeError;  
  73.              }  
  74.          }  
  75.          sqlcon.Close();  
  76.          sqlcom.Dispose();  
  77.  
  78.         return (int)ImportState.right;  
  79.      }  
  80.     public DataTable ExcelToDataTable(string excelPath)  //把Excel里的數(shù)據(jù)轉(zhuǎn)換為DataTable,并返回DataTable  
  81.      {  
  82.            string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelPath + ";Extended Properties='Excel 8.0;IMEX=1'";  
  83.         System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection(strCon);  
  84.         string strCom = "SELECT * FROM [Sheet1$]";  
  85.         DataTable dt;  
  86.         try 
  87.         {  
  88.             Conn.Open();  
  89.             System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, Conn);  
  90.             DataSet ds = new DataSet();  
  91.             myCommand.Fill(ds, "[Sheet1$]");  
  92.             Conn.Close();  
  93.             dt = ds.Tables[0];  
  94.         }  
  95.         catch(Exception err)  
  96.         {  
  97.             return null;  
  98.         }  
  99.         return dt;  
  100.      }  
  101.     public bool TableExist(string tableName) //查看數(shù)據(jù)庫(kù)里是否有此表名  
  102.      {  
  103.          sqlcom = new SqlCommand();  
  104.          sqlcom.Connection = sqlcon;  
  105.          sqlcom.CommandType = CommandType.Text;  
  106.         try 
  107.          {  
  108.              sqlcon.Open();  
  109.             string sql = "select name from sysobjects where type='u'";  
  110.              sqlcom.CommandText = sql;  
  111.              SqlDataReader sqldr = sqlcom.ExecuteReader();  
  112.             while (sqldr.Read())  
  113.              {  
  114.                 if (sqldr.GetString(0).ToUpper() == tableName.ToUpper())  
  115.                     return true;  
  116.              }  
  117.          }  
  118.         catch { return false; }  
  119.         finally 
  120.          {  
  121.              sqlcon.Close();  
  122.          }  
  123.         return false;  
  124.      }  
  125.     public ArrayList GetTableField(string tableName)  //得到數(shù)據(jù)庫(kù)某一個(gè)表中的所有字段  
  126.      {  
  127.          ArrayList al = new ArrayList();  
  128.          sqlcom = new SqlCommand();  
  129.          sqlcom.Connection = sqlcon;  
  130.          sqlcom.CommandType = CommandType.Text;  
  131.         try 
  132.          {  
  133.              sqlcon.Open();  
  134.             string sql = "SELECT b.name FROM sysobjects a INNER JOIN syscolumns b ON a.id = b.id WHERE (a.name = '" + tableName + "')";  
  135.              sqlcom.CommandText = sql;  
  136.              SqlDataReader sqldr = sqlcom.ExecuteReader();  
  137.             while (sqldr.Read())  
  138.              {  
  139.                  al.Add(sqldr.GetString(0));  
  140.              }  
  141.          }  
  142.         finally 
  143.          {  
  144.              sqlcon.Close();  
  145.          }  
  146.         return al; //返回的是表中的字段  
  147.      }  
  148.     public enum ImportState  
  149.      {  
  150.          right = 1, //成功  
  151.          tableNameError = 2,//表名不存在  
  152.          fieldMatchError = 3,//excel里的字段和數(shù)據(jù)庫(kù)表里的字段不匹配  
  153.          dataTypeError = 4, //轉(zhuǎn)換數(shù)據(jù)類型時(shí)發(fā)生錯(cuò)誤  
  154.         excelFormatError=5,//Excel格式不能讀取  
  155.      }  
  156.     public void Alert(string str)  
  157.      {  
  158.          HttpContext.Current.Response.Write("<script language='javascript'>alert('" + str + "');</script>");  
  159.      }  

ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)的操作就向你介紹到這里,希望通過(guò)實(shí)例對(duì)你了解ASP.NET Excel導(dǎo)入SQL Server數(shù)據(jù)庫(kù)有所幫助。

【編輯推薦】

  1. ASP.NET自定義控件開(kāi)發(fā)淺析
  2. ASP.NET服務(wù)器控件之生命周期淺析
  3. ASP.NET中Excel動(dòng)態(tài)實(shí)現(xiàn)淺析
  4. ASP.NET操作Excel注意事項(xiàng)淺析
  5. ASP.NET讀取Excel文件的三大方法淺析
責(zé)任編輯:仲衡 來(lái)源: IT168
相關(guān)推薦

2009-07-28 11:23:04

Excel導(dǎo)入SQL

2009-07-31 10:29:57

ASP.NET數(shù)據(jù)庫(kù)操

2009-08-12 11:04:38

ASP.NET和SQL

2009-08-05 09:38:28

SQL Server數(shù)

2009-08-04 11:22:07

ASP.NET數(shù)據(jù)導(dǎo)入

2009-09-03 19:30:02

ASP.NET數(shù)據(jù)庫(kù)SQL Server

2009-02-23 15:20:03

SQL Server數(shù)據(jù)庫(kù)ASP.NET

2009-07-31 09:57:47

ASP.NET數(shù)據(jù)庫(kù)緩

2010-07-21 14:17:36

SQL Server數(shù)

2009-07-28 17:36:21

ASP.NET數(shù)據(jù)庫(kù)連

2012-08-03 10:20:06

ASP.NET

2009-07-31 16:45:23

ASP.NET數(shù)據(jù)庫(kù)操

2011-03-10 10:50:01

excelsql數(shù)據(jù)庫(kù)

2009-03-09 17:46:16

ASP.NETSQLOracle

2009-07-29 09:12:31

ASP.NET數(shù)據(jù)庫(kù)連

2009-08-11 12:52:05

ASP.NET數(shù)據(jù)庫(kù)程

2009-08-05 15:40:49

ASP.NET連接數(shù)據(jù)

2009-07-28 10:26:30

ASP.NET操作Ex

2009-07-31 16:09:23

ASP.NET數(shù)據(jù)庫(kù)圖

2009-07-31 16:51:59

ASP.NET數(shù)據(jù)庫(kù)驅(qū)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)