網站首頁 編程語言 正文
一、填充數據
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand("select * from Catogories;select * from Customers", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);//da可以多次使用于不同的SelectCommand.CommandText
DataTableMapping map = da.TableMappings.Add("Table", "Customer");//參數依次為,數據源中表,DataSet中的表
map.ColumnMappings.Add("Name", "CustomerName");
//da.MissingMappingAction= MissingMappingAction.Ignore;
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;//用于處理模式沖突,默認為Add。
da.Fill(ds);//新增的DataTable表名默認為"Table",而后新增的表名默認為Table1,Table2等。
da.Fill(ds, "Customer");
da.Fill(ds, 0, 10000, "Customer");//用于分頁填充
da.FillSchema(ds, System.Data.SchemaType.Source, "Customer");//僅僅填充模式信息
如果連接未打開,則會自動打開,Fill后自動關閉,如還需要使用此連接,需要重新打開。如果conn手工已打開,Fill后需要手動關閉連接。
二、將多個DataTable插入Tables集合
1、使用多個DataAdapter填充
SqlCommand cmd = new SqlCommand("select * from Catogories;s", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Catogories");
cmd.CommandText = "select * from Customers";
SqlDataAdapter da2 = new SqlDataAdapter(cmd);
da2.Fill(ds, "Customer");
2、使用同一個DataAdapter,用不同的SelectCommandText填充
SqlCommand cmd = new SqlCommand("select * from Catogories;s", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "Catogories")
da.SelectCommand.CommandText = "select * from Customers";
da.Fill(ds, "Customer");
3、返回多個結果集的SQL(推薦)
SqlCommand cmd = new SqlCommand("select * from Catogories;select * from Customers", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
三、使用DataAdapter更新數據
DataSet dsChanged = ds.GetChanges();
if (dsChanged != null)
{
SqlCommandBuilder builder=new SqlCommandBuilder(da);
//自動生成InsertCommand,UpdateCommand,DeleteCommand命令,前提是:Select語句為單表,同時此語句包含主鍵或唯一列
da.Update(ds,"Author");//Update方法檢測DataSet中的每條記錄,如果行狀態不為Unchanaged,根據其行狀態調用不同的SQL語句。
ds.AcceptChanges();
}
- DataTable.AcceptChanges方法:提交自上次調用AcceptChanges以來對該表進行的所有更改。??
所有Added和Modified行成為Unchanged;Deleted行被移除。?? - DataTable.RejectChanges方法:回滾自該表加載以來或上次調用AcceptChanges以來對該表進行的所有更改。??
Added被移除。DataRowState為Modified或Deleted的行返回到其初始狀態。?
四、使用SQL
OleDbDataAdapter da = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand("insert into [A_Emp_Dept_20190522](empname,line) values (?,?)", conn);
cmd.Parameters.Add(new OleDbParameter("empname", OleDbType.Char, 11, ParameterDirection.Input, false, 0, 0, "empname", DataRowVersion.Current, null));
cmd.Parameters.Add(new OleDbParameter("line", OleDbType.Char, 11, ParameterDirection.Input, false, 0, 0, "line", DataRowVersion.Current, null));
da.InsertCommand = cmd;
//da.InsertCommand.UpdatedRowSource= UpdateRowSource.Both;
DataSet ds = new DataSet();
DataRow row = ds.Tables[0].NewRow();
row["empname"] = "222";
row["line"] = "FBd";
ds.Tables[0].Rows.Add(row);
da.Update(ds);
UpdatedRowSource
- Both:輸出參數和返回的結果集的第一行都可以映射到 DataSet 中已更改的行。
FirstReturnedRecord:只有返回的結果集的第一行中的數據才可以映射到 DataSet 中已更改的行。
None:忽略任何輸出參數或返回的結果集中的行。
OutputParameters:只有輸出參數才可以映射到 DataSet 中已更改的行
五、DataAdapter事件
- RowUpdating:在對數據源執行命令前的 Update(DataSet) 過程中發生。
- RowUpdated:在對數據源執行命令后的 Update(DataSet) 過程中發生。
SqlRowUpdatedEventArgs 類屬性
- Command:獲取或設置當調用 SqlCommand 時執行的 Update(DataSet)。
- Errors:獲取當 Command 執行時 .NET Framework 數據提供程序生成的任何錯誤。?
- RecordsAffected:通過執行 SQL 語句獲取更改、插入或刪除的行數。?
- Row:獲取通過 Update(DataSet) 發送的 DataRow。?
- RowCount:獲取在一批更新記錄中處理的行數。?
- StatementType:獲取所執行的 SQL 語句的類型。?
- Status:獲取 Command 屬性的 UpdateStatus。?
- TableMapping:獲取通過 Update(DataSet) 發送的 DataTableMapping。
原文鏈接:https://www.cnblogs.com/springsnow/p/9433912.html
相關推薦
- 2022-04-07 C++11時間日期庫chrono的使用_C 語言
- 2022-05-27 C++?超詳細分析數據結構中的時間復雜度_C 語言
- 2022-11-23 Python多線程使用方法詳細講解_python
- 2021-12-03 C++類和對象實戰之Date類的實現方法_C 語言
- 2024-03-14 SpringBoot中RestTemplate 發送http請求
- 2022-08-16 PostgreSQL怎么創建分區表詳解_PostgreSQL
- 2022-04-15 ASP.NET?Core托管模型CreateDefaultBuilder()方法_基礎應用
- 2023-05-18 深入了解Android?Okio的超時機制_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支