Access數據庫多條數據Insert(2)_Access數據庫教程
推薦:Access 2010數據庫加密介紹使用數據庫密碼加密 Access 數據庫 Access 中的加密工具合并了兩個舊工具(編碼和數據庫密碼),并加以改進。使用數據庫密碼來加密數據庫時,所有其他工具都無法讀取數據,并強制用戶必須輸入密碼才能使用數據庫。在 Access 2010 中應用的加密所使用的算法比早期版本的 A
這里模仿SQL Server中定義一個零時表,然后向其中插入盡可能全的數據,然后在基于零時表查詢出想要的數據放入到我想要的數據中執行!exec下結果又出問錯了!此處拋出這樣的錯誤:無效的 SQL語句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。其實會出錯完全可以想想的到,畢竟Access中連insert into table values (1,2),(1,3) 這樣的語句都不支持。此時嘗試三也不得不宣告失敗!嘗試了這么多,我不得不使用早就準備用的方法 多條insert一起執行。
嘗試四
The Demo: 先獲取我想要的數據形式 :1,2,3 此處略。看sql:
public static int InsertRoleContact2(int UserID, string RoleCollection) { string[] arr = RoleCollection.Split(','); StringBuilder BuilSQL = new StringBuilder(""); foreach (string item in arr) { BuilSQL.Append( string.Format("insert into Sky_Admin_Role(AdminID,RoleID) values ({0},{1});",UserID,Convert.ToInt32(item))); } return Common.OleDbHelper.ExecuteNonQuery(CommandType.Text, BuilSQL.ToString(), null); }執行下結果打出我的意外:在 SQL 語句結尾之后找到字符。 竟然連這種語句都不支持,沒相當Access會對數據支持的這么少。既然這樣也不行,難道只有循環執行每一天SQL語句嗎?我看可行!循環是必要的,只要不多次連接數據庫,也不會占用太多資源的,此時引出了我的本文的重點,如何向Access中插入多條記錄。
嘗試五
The Demo:
public static void InsertMultipleSQL(int UserID,string RoleCollection) { string[] arr = RoleCollection.Split(','); using (OleDbConnection conn = new OleDbConnection(Common.config.AccessConnStr)) { OleDbCommand cmd = conn.CreateCommand(); OleDbTransaction trans = null; try { conn.Open(); trans = conn.BeginTransaction(); cmd.Transaction = trans; foreach (string item in arr) { cmd.CommandText = string.Format( string.Format( "insert into Sky_Admin_Role(AdminID,RoleID ) values ({0},{1});", UserID, Convert.ToInt32(item))); cmd.ExecuteNonQuery(); } trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } }注意當插入多條語句時我們不要忘了一旦發生異常,我們需要撤銷操作,就必須要用到事務。執行Aceess的insert時,我們需要在connection關閉前循環插入,這樣才能減少資源暫用,提升性能。這里宣告嘗試五成功!
分享:Access數據庫安全策略之ASP式這種作法是比較專業但也是很安全的也是現在比較流行的作法,但是現在許多的人只是作了一半,只是將數據名改成ASP而以,這樣的話直接用FlashGet之類的下載工具一樣可以將數據庫下載,這種方式的正確作法有兩步: 第一步:在數據庫內創建一個字段,名稱隨意,類型是OLE對
- 相關鏈接:
- 教程說明:
Access數據庫教程-Access數據庫多條數據Insert(2)
。