国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

.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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪江市| 通海县| 日土县| 迁安市| 嘉义县| 延庆县| 宁河县| 文成县| 安丘市| 津市市| 开封市| 咸宁市| 双流县| 汨罗市| 衡东县| 昌乐县| 东光县| 宁明县| 巩义市| 图木舒克市| 安图县| 永寿县| 鹤壁市| 马尔康县| 巴林左旗| 雅安市| 达日县| 东海县| 佛山市| 雅江县| 昭平县| 湘乡市| 呼玛县| 当涂县| 汝城县| 星座| 岚皋县| 许昌市| 盈江县| 卢龙县| 突泉县|