亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.Net中使用OracleDataAdapter

2019-11-17 02:05:29
字體:
來源:轉載
供稿:網友

.Net中使用OracleDataAdapter

本來只想簡單記錄一下OracleDataAdapter的批量增加和修改用法的,在園子里看到一篇比較詳細的就在這分享了(Oracle Data PRovider for .NET),雖然用的是Update(DataSet dataSet, string srcTable);,其實都差不多;dataSet為新數據集,srcTable為對應數據庫表名

值得提一句的就是,對于新的DataTable數據,根據情況要使用AcceptChanges();方法,然后設置表中每行數據狀態,如修改數據操作

foreach (DataRow dr in data.Rows) { if (dr.RowState == DataRowState.Unchanged) dr.SetModified(); }

然后再用Update(DataTable dataTable)

使用前保證新DataTabele用AcceptChanges();方法保存了

 1 public static bool MultiUpdateData(DataTable data, string Columns, string tableName) 2         { 3             using (OracleConnection connection = new OracleConnection(connStr)) 4             { 5                 string SQLString = string.Format("select {0} from {1} where rownum=0", Columns, tableName); 6                 using (OracleCommand cmd = new OracleCommand(SQLString, connection)) 7                 { 8                     try 9                     {10                         connection.Open();11                         OracleDataAdapter myDataAdapter = new OracleDataAdapter();12                         myDataAdapter.SelectCommand = new OracleCommand(SQLString, connection);13                         OracleCommandBuilder custCB = new OracleCommandBuilder(myDataAdapter);14                         custCB.ConflictOption = ConflictOption.OverwriteChanges;15                         custCB.SetAllValues = true;16                         foreach (DataRow dr in data.Rows)17                         {18                             if (dr.RowState == DataRowState.Unchanged)19                                 dr.SetModified();20                         }21                         myDataAdapter.Update(data);22                         data.AcceptChanges();23                         myDataAdapter.Dispose();24                         return true;25                     }26                     catch (System.Data.OracleClient.OracleException E)27                     {28                         connection.Close();29                         return false;30                     }31                 }32             }33         }
Oracle批量修改

一下是鏈接文章,抄在這是怕丟失吧(多慮了)

1. 通過DataAdapter訪問數據庫DataAdapter有四個屬性SelectCommand,DeleteCommand,InsertCommand,UpdateCommand1.1 當做檢索處理的時候, 執行SelectCommand的操作,返回數據集。

// C# 例子using System;using System.Data;using System.xml;using Oracle.Dataaccess.Client;class testSample{static void Main(){//數據庫連接打開 OracleConnection con = new OracleConnection(); con.ConnectionString = "User Id=scott;PassWord=tiger;Data Source=oracle;"; con.Open(); Console.WriteLine("Connected Successfully");

// Create the command // sql文 OracleCommand cmd = new OracleCommand("", con);//select statement string strSelectSql = "SELECT STU_ID, STU_NAME, AGE, BIRTHDAY, SEX FROM TBL_STUDENT " + " WHERE SEX = :I_SEX AND BIRTHDAY >= :I_BIRTHDAY AND AGE = :I_AGE ";

//command和檢索sql文 關聯 cmd.CommandText = strSelectSql;//sql文中變量通過oracle參數傳遞 OracleParameter oraParameter;

oraParameter = new OracleParameter("I_SEX",OracleDbType.Varchar2, 2); oraParameter.Value = "01"; cmd.Parameters.Add(oraParameter);//字符型

oraParameter = new OracleParameter("I_BIRTHDAY",OracleDbType.Date);//日期型 oraParameter.Value = "1986/01/01"; cmd.Parameters.Add(oraParameter);

oraParameter = new OracleParameter("I_AGE",OracleDbType.Int32); oraParameter.Value = 20; cmd.Parameters.Add(oraParameter);

DataSet dtTmp = new DataSet();

using(OracleDataAdapter dataAdapter = new OracleDataAdapter()) { dataAdapter.SelectCommand = cmd;//檢索command設置 dataAdapter.Fill(dtTmp);//檢索結果保存在dtTmp數據集中 }

// Console.WriteLine("Number of rows : {0} ", dtTmp.Tables[0].Rows.Count); // Close and Dispose OracleConnection object con.Close(); con.Dispose();

}

1.2 如果sql文只是想count(*) 獲得數據庫中記錄件數,可以直接使用OracleCommand.ExecuteScalar()來快速取得。

// C# 例子

Cmd = new OracleCommand( "SELECT COUNT(*) FROM TBL_STUDENT", Conn );Object o = Cmd.ExecuteScalar();int nRecordCount = Convert.ToInt32(o.ToString());1.3 當做更新處理的時候,調用 OracleDataAdapter 的Update方法,對輸入參數DataTable中每行進行循環, 根據當前行的狀態調用相應的 INSERT、UPDATE 或 DELETE 語句。

RowState屬性相關處理的OracleCommandDataRowState.Added 該行已添加 :InsertCommandDataRowState.Deleted 該行已刪除 :DeleteCommandDataRowState.Modified 該行已被修改 :UpdateCommand// C# 例子using System;using System.Data;using System.Xml;using Oracle.DataAccess.Client;class testSample{public void updateStuData(DataSet i_Data){ //數據庫連接打開int nRecCount = 0;OracleConnection con = new OracleConnection();con.ConnectionString = "User Id=scott;Password=tiger;Data Source=oracle;";con.Open();Console.WriteLine("Connected Successfully");

// Create the command// sql文OracleCommand cmdUpdate = new OracleCommand("", con);

// sql文OracleCommand cmdDelete = new OracleCommand("", con);

// sql文OracleCommand cmdInsert = new OracleCommand("", con);

//select statementstring strUpdateSql = "UPDATE TBL_STUDENT SET STU_NAME = :I_STU_NAME WHERE STU_ID = :I_STU_ID ";string strDeleteSql = "DELETE FROM TBL_STUDENT WHERE STU_ID = :I_STU_ID";string strInsertSql = "INSERT TBL_STUDENT VALUES (:I_STU_ID, :I_STU_NAME, :I_AGE,:I_BIRTHDAY, :I_SEX )";

//command和檢索sql文 關聯cmdUpdate.CommandText = strUpdateSql ;cmdDelete.CommandText = strDeleteSql ;cmdInsert.CommandText = strInsertSql ;

//sql文中變量通過oracle參數傳遞OracleParameter oraParameter;

//當設置參數的時候//oracle參數值可通過SourceColumn屬性與更新數據行的字段綁定//取得數據值的版本可通過SourceVersion來設定。//DataRowVersion.Current 取得數據行中修改后的數據值//DataRowVersion.Original 取得數據行中原始的數據值//Where條件里面的參數值往往設置為取DataRowVersion.Original版本//更新或者插入的參數值往往設置為取DataRowVersion.Current版本

//--------------------------------------------------//更新用的oracle commandoraParameter = new OracleParameter("I_STU_NAME", OracleDbType.Varchar2, 20);oraParameter.SourceColumn = "STU_NAME";//更新字段值oraParameter.SourceVersion = DataRowVersion.Current;cmdUpdate.Parameters.Add(oraParameter);

oraParameter = new OracleParameter("I_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";//檢索字段值oraParameter.SourceVersion = DataRowVersion.Original;cmdUpdate.Parameters.Add(oraParameter);

//--------------------------------------------------//刪除用的oracle commandoraParameter = new OracleParameter("I_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";//檢索字段值oraParameter.SourceVersion = DataRowVersion.Original;cmdDelete.Parameters.Add(oraParameter);

//--------------------------------------------------//追加用的oracle commandoraParameter = new OracleParameter("I_STU_ID", OracleDbType.Varchar2, 5);oraParameter.SourceColumn = "STU_ID";oraParameter.SourceVersion = DataRowVersion.Current;cmdInsert.Parameters.Add(oraParameter);

oraParameter = new OracleParameter("I_STU_NAME", OracleDbType.Varchar2, 20);oraParameter.SourceColumn = "STU_NAME";oraParameter.SourceVersion = DataRowVersion.Current;cmdInsert.Parameters.Add(oraParameter);

oraParameter = new OracleParameter("I_AGE", OracleDbType.Int32);oraParameter.SourceColumn = "AGE";oraParameter.SourceVersion = DataRowVersion.Current;cmdInsert.Parameters.Add(oraParameter);

oraParameter = new OracleParameter("I_BIRTHDAY", OracleDbType.Date);oraParameter.SourceColumn = "BIRTHDAY";oraParameter.SourceVersion = DataRowVersion.Current;cmdInsert.Parameters.Add(oraParameter);

oraParameter = new OracleParameter("I_SEX", OracleDbType.Varchar2, 2);oraParameter.SourceColumn = "SEX";oraParameter.SourceVersion = DataRowVersion.Current;cmdInsert.Parameters.Add(oraParameter);

using(OracleDataAdapter dataAdapter = new OracleDataAdapter()){dataAdapter.InsertCommand= cmdUpdate;//追加command設置dataAdapter.DeleteCommand= cmdDelet

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91高清视频免费观看| 亚洲风情亚aⅴ在线发布| 成人黄色av播放免费| 精品少妇一区二区30p| 97免费在线视频| 亚洲国产一区二区三区四区| 国产精选久久久久久| 亚洲欧美在线一区| 国产亚洲a∨片在线观看| 热久久99这里有精品| xxx欧美精品| 亚洲精品之草原avav久久| 国内精品模特av私拍在线观看| 国产欧美精品在线播放| 欧美国产日韩一区| 欧美电影免费在线观看| 国产精品v片在线观看不卡| 美日韩精品免费观看视频| 日韩欧美a级成人黄色| 久久夜色精品亚洲噜噜国产mv| 亚洲第一区在线观看| 成人av在线天堂| 亚洲精品久久久久国产| 国产日韩欧美成人| 国产精品偷伦一区二区| 国产在线不卡精品| 成人伊人精品色xxxx视频| 亚洲美女性生活视频| 欧美日韩午夜激情| 日本视频久久久| 欧美日韩激情视频| 热re99久久精品国产66热| 夜夜嗨av色一区二区不卡| 欧美一区视频在线| 国产精品久久久久久久久久| 91黑丝高跟在线| 国产91精品黑色丝袜高跟鞋| 国产suv精品一区二区三区88区| 日韩电影免费在线观看| 欧美一区二粉嫩精品国产一线天| 一级做a爰片久久毛片美女图片| 久久久人成影片一区二区三区观看| 精品亚洲夜色av98在线观看| 欧美激情一区二区三区久久久| 欧美高清videos高潮hd| 日韩久久午夜影院| 欧美精品一区二区三区国产精品| 欧美三级xxx| 国产亚洲欧美视频| 欧洲日本亚洲国产区| 91精品国产777在线观看| 成人性生交大片免费看视频直播| 日韩精品一二三四区| 久久久精品日本| 国产欧美一区二区三区四区| 九九热r在线视频精品| 亚洲一区二区自拍| 91精品啪在线观看麻豆免费| 亚洲最新视频在线| 日韩精品在线观看一区| 精品国产91久久久久久| 亚洲国产精彩中文乱码av| 亚洲国产精品美女| www.日本久久久久com.| 国产美女久久精品香蕉69| 日韩在线观看免费av| 久久成年人免费电影| 97国产suv精品一区二区62| 97香蕉超级碰碰久久免费的优势| 91在线观看欧美日韩| 91av在线影院| 色天天综合狠狠色| 在线观看国产精品淫| 久久久精品一区| 国产精品自拍偷拍| 久久好看免费视频| 91免费看国产| 亚洲一区二区三区777| 国产91精品久久久久| 日韩久久精品电影| 一区二区三区美女xx视频| 国产精品久久中文| 欧美一区二区色| 亚洲成人免费网站| 国产亚洲欧洲高清| 日韩中文字在线| 欧美精品激情在线| 久久精品成人欧美大片古装| 国产日韩精品在线| 久久99精品视频一区97| 日韩在线不卡视频| 国产精品第一视频| 欧美日韩国产中文精品字幕自在自线| 91精品久久久久久| 欧美另类极品videosbest最新版本| 精品国产美女在线| 精品自拍视频在线观看| 97在线视频免费播放| 久久久精品日本| 欧美国产视频日韩| 久久国产精品免费视频| 91高清在线免费观看| 国产欧美日韩综合精品| 国产福利成人在线| 少妇激情综合网| 国产精品吴梦梦| 国内精品400部情侣激情| 日韩欧美中文字幕在线播放| 国产成人精品一区二区三区| 欧美视频在线观看免费| 欧美在线一级视频| 成人性生交xxxxx网站| 欧美日韩高清区| 精品亚洲一区二区三区在线观看| 久久精品成人欧美大片| 播播国产欧美激情| 成人xxxxx| 国产激情久久久久| 久久躁日日躁aaaaxxxx| 国产视频精品xxxx| 成人中文字幕+乱码+中文字幕| 91在线视频九色| 欧美日韩国产精品一区二区不卡中文| 亚洲成人激情视频| 亚洲欧美三级在线| 亚洲国产欧美一区二区三区久久| 亚洲欧洲自拍偷拍| 亚洲欧洲av一区二区| 亚洲精品av在线| 成人网在线免费观看| 欧美午夜片在线免费观看| 日韩欧美在线第一页| 国产精品一区二区三区成人| 911国产网站尤物在线观看| 欧美激情一区二区三区成人| 日本精品久久久| 亚洲色图15p| 美女av一区二区| 伊人伊成久久人综合网小说| 亚洲精品欧美一区二区三区| 91国内揄拍国内精品对白| 久久久精品久久久| 中文字幕精品一区二区精品| 亚洲美女喷白浆| 欧美成人免费一级人片100| 欧美视频裸体精品| 日韩精品极品在线观看| 亚洲第一福利网站| 久久精品一偷一偷国产| 亚洲美女中文字幕| 欧美激情免费在线| 久久精品国产69国产精品亚洲| 亚洲精品第一国产综合精品| 夜夜嗨av色综合久久久综合网| 狠狠久久五月精品中文字幕| 欧美在线视频导航| 亚洲va码欧洲m码| 岛国av在线不卡| 8050国产精品久久久久久| 日韩欧美成人免费视频| 欧美黄色三级网站| 国产日韩在线精品av| 久久久精品亚洲| 91久久精品视频|