Access數(shù)據(jù)庫(kù)多條數(shù)據(jù)Insert_Access數(shù)據(jù)庫(kù)教程
推薦:Access 2010數(shù)據(jù)庫(kù)加密介紹使用數(shù)據(jù)庫(kù)密碼加密 Access 數(shù)據(jù)庫(kù) Access 中的加密工具合并了兩個(gè)舊工具(編碼和數(shù)據(jù)庫(kù)密碼),并加以改進(jìn)。使用數(shù)據(jù)庫(kù)密碼來(lái)加密數(shù)據(jù)庫(kù)時(shí),所有其他工具都無(wú)法讀取數(shù)據(jù),并強(qiáng)制用戶(hù)必須輸入密碼才能使用數(shù)據(jù)庫(kù)。在 Access 2010 中應(yīng)用的加密所使用的算法比早期版本的 A
當(dāng)下Access數(shù)據(jù)庫(kù)可能要被遺忘了!比較這個(gè)輕量級(jí)數(shù)據(jù)庫(kù)被精簡(jiǎn)了許多功能,個(gè)人感覺(jué)用起來(lái)還是挺麻煩的!當(dāng)前Access在企業(yè)項(xiàng)目中就是一塊雞肋。數(shù)據(jù)量小使用SQL Server是浪費(fèi),既然選擇了Access就別抱怨了!如果用好了還是一塊寶!廢話(huà)不多說(shuō)了,今天就來(lái)探討下如何向Access中插入多條數(shù)據(jù)把!
由于在此之前我沒(méi)有用過(guò)Access數(shù)據(jù)庫(kù)的,當(dāng)需要想數(shù)據(jù)庫(kù)中插入多條數(shù)據(jù)時(shí),我們不妨先按照sql server的做法:“insert into tablename(column1,column2) values (a,b),(c,d),(e,f)”。于是按照這個(gè)思路,我的第一個(gè)方案出來(lái)了。
嘗試一:
The Demo:
StringBuilder BuiList = new StringBuilder(string.Format("({0},0)", UserID)); foreach (RepeaterItem item in Rpt_AdminRole.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { HtmlInputCheckBox cbRole = item.FindControl("cb_Role") as HtmlInputCheckBox; if (cbRole.Checked) { BuiList.Append(",("); BuiList.Append(UserID); BuiList.Append(","); BuiList.Append(cbRole.Value); BuiList.Append(")"); } } }The Dal:
/// <summary> /// 添加Role關(guān)系 /// </summary> /// <param name="roleContact">角色關(guān)系 eg: "(1,1),(1,2)"</param> /// <returns></returns> public static int InsertRoleContact(string roleContact) { string sql = "insert into Sky_Admin_Role(AdminID,RoleID) values "+roleContact; return Common.OleDbHelper.ExecuteNonQuery(CommandType.Text, sql, null); }exec下就會(huì)出現(xiàn)這樣的錯(cuò)誤:SQL 語(yǔ)句的結(jié)束位置缺少分號(hào) (;)。
Access對(duì)sql的支持果然是大大精簡(jiǎn),到此嘗試一失敗!, 很快在我有另外idea。sql server 多表查詢(xún)對(duì)select table 的支持!我可以直接傳一個(gè)DataTable到sql語(yǔ)句中,說(shuō)干就干!
嘗試二
The Demo : 獲取DataTable
public DataTable GetInsertSQL(Repeater rep,string controlID) { DataTable data = new DataTable(); data.Columns.Add("AdminID"); data.Columns.Add("RoleID"); foreach (RepeaterItem item in rep.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { HtmlInputCheckBox cb = item.FindControl(controlID) as HtmlInputCheckBox; if (cb.Checked) { DataRow row = data.NewRow(); row.ItemArray = new object[] { UserID, cb.Value}; data.Rows.Add(row); } } } return data; }The Dal:
public static int InsertRoleContact(DataTable dt) { string sql = "insert into Sky_Admin_Role(AdminID,RoleID) select * from @Data"; OleDbParameter[] param = new OleDbParameter[] { new OleDbParameter("@Data",?){Value =dt} }; return Common.OleDbHelper.ExecuteNonQuery(CommandType.Text, sql, param); }當(dāng)代碼到這里我就知道此方法行不通,因?yàn)镺ledbType中沒(méi)有對(duì)應(yīng)的table類(lèi)型,如果是SQL server由于支持xml可以設(shè)置為 SqlDbType.Xml類(lèi)型來(lái)傳遞DataTable數(shù)據(jù),由于sql本事對(duì)xml的支持 ,可以用sql基于xml的查詢(xún),本文主要討論Access,此處暫不討論了!嘗試二宣布失�。�。接下來(lái)我又想到了零時(shí)表,Access是不是也支持零時(shí)表的查詢(xún)呢?
嘗試三
The Demo: 取出我想要的數(shù)據(jù)格式 (1,2,3)
public string GetInserCollection(Repeater rep, string controlID) { StringBuilder buiCollecton = new StringBuilder(""); buiCollecton.Append("(0"); foreach (RepeaterItem item in rep.Items) { if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) { HtmlInputCheckBox cb = item.FindControl(controlID) as HtmlInputCheckBox; if (cb.Checked) { buiCollecton.Append(string.Format(",{0}", cb.Value)); } } } buiCollecton.Append(")"); return buiCollecton.ToString(); }
The Dal :
public static int InsertRoleContact(int UserID,string RoleCollection)
{
StringBuilder BuiSQL = new StringBuilder("");
BuiSQL.Append("declare @SkyContact table(userID int,roleID int);");
BuiSQL.Append("insert into @SkyContact values select " + UserID + ",R_ID from Sky_Role;");
BuiSQL.Append(string.Format("insert into Sky_Admin_Role values (select * from @SkyContact where roleID in {0})",RoleCollection));
return Common.OleDbHelper.ExecuteNonQuery(CommandType.Text, BuiSQL.ToString(), null);
}
分享:Access數(shù)據(jù)庫(kù)安全策略之ASP式這種作法是比較專(zhuān)業(yè)但也是很安全的也是現(xiàn)在比較流行的作法,但是現(xiàn)在許多的人只是作了一半,只是將數(shù)據(jù)名改成ASP而以,這樣的話(huà)直接用FlashGet之類(lèi)的下載工具一樣可以將數(shù)據(jù)庫(kù)下載,這種方式的正確作法有兩步: 第一步:在數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建一個(gè)字段,名稱(chēng)隨意,類(lèi)型是OLE對(duì)
- Access 2010數(shù)據(jù)庫(kù)加密介紹
- Access數(shù)據(jù)庫(kù)安全策略之ASP式
- 第N次被ACCESS的關(guān)鍵字涮
- Access中用Jet SQL語(yǔ)句刪除表關(guān)系
- Access報(bào)表打印如何自動(dòng)分頁(yè)
- Access完成累計(jì)余額的計(jì)算
- 搭建Access為主的Mdb數(shù)據(jù)庫(kù)
- 一句sql更新兩個(gè)表并可更新對(duì)應(yīng)的字段值具體實(shí)現(xiàn)
- MySQL查詢(xún)優(yōu)化:連接查詢(xún)排序limit(join、order by、limit語(yǔ)句)介紹
- 內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法
- 使用準(zhǔn)則進(jìn)行條件查詢(xún)--1.4.從窗體中選擇查詢(xún)的條件
- 中文Access2000速成教程--1.1 使用“向?qū)А痹O(shè)計(jì)數(shù)據(jù)庫(kù)
Access數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Access數(shù)據(jù)庫(kù)教程推薦
- 如何設(shè)置Access項(xiàng)目中檢索的記錄數(shù)
- 使用準(zhǔn)則進(jìn)行條件查詢(xún)
- ACCESS中關(guān)于SQL語(yǔ)句的轉(zhuǎn)義字符
- 如何遠(yuǎn)程調(diào)用ACCESS數(shù)據(jù)庫(kù)
- Access數(shù)據(jù)庫(kù)安全策略之ASP式
- 空手建立Access數(shù)據(jù)庫(kù)
- access升級(jí)到SQLServer如何調(diào)整字段類(lèi)型及函數(shù):JET SQL 和T-SQL
- 談?dòng)肁ccess作網(wǎng)站數(shù)據(jù)庫(kù)的弊端
- 以前流行的4種Access數(shù)據(jù)庫(kù)安全方式
- 如何巧用SQL鏈接服務(wù)器訪(fǎng)問(wèn)遠(yuǎn)程Access數(shù)據(jù)庫(kù)
猜你也喜歡看這些
- 怎樣在Access報(bào)表中每隔N行顯示一條粗線(xiàn)
- Access數(shù)據(jù)庫(kù)的4種安全方式
- ASP顯示ACCESS數(shù)據(jù)庫(kù)的GIF圖象
- 在Access數(shù)據(jù)庫(kù)中實(shí)現(xiàn)密碼管理的另一種方式
- 處理加了密碼的MDB文件
- 解析MDB與XLS文件互相轉(zhuǎn)換方法
- Access數(shù)據(jù)庫(kù)多條數(shù)據(jù)Insert
- 怎樣防止Access 2000密碼被破譯
- 解讀Access數(shù)據(jù)庫(kù)支持用戶(hù)同時(shí)在線(xiàn)問(wèn)題
- 在VB中兼容非ACCESS數(shù)據(jù)庫(kù)的技巧
- 相關(guān)鏈接:
- 教程說(shuō)明:
Access數(shù)據(jù)庫(kù)教程-Access數(shù)據(jù)庫(kù)多條數(shù)據(jù)Insert
。