C#中用到的oracle語句總結

最近寫的一個小網站,用的oracle數據庫

1.關於時間,無論字段要存日期還是日期和時間,字段類型都是Date

如果僅僅保存日期沒有時間,插入數據的時候轉換成to_date('strDate','yyyy-MM-dd') ;

如果保存日期和時間,插入數據的時候轉換成to_date('strDate','yyyy-MM-dd HH24:mi:ss');

如:string.Format(" insert into table1(name,time) values ({0},to_date('{1}','yyyy-MM-dd HH24:mi:ss') ",

     "misty",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

注意:oracle的時間格式是HH24:mi:ss,不是HH:mm:ss,否則會報錯。

2.關於分頁 between...and...

參數:p=page(第幾頁)、r=rows(每頁的記錄數)

mySql中:select * from user limit (p-1)*r, r;

注:limit a,b; a表示起始記錄,若是從頭查,a爲0;b表示從a開始包括a的b條記錄。

oracle中:分頁查詢語句要多套兩次select

select * from (select t.*, rownum rn from (select * from user) t  where rn between (p-1)*r+1 and p*r;

注:between and 前後都是閉區間,[a,b]取從第a條開始到b條的閉區間數據。

3.關於多條插入

mySql中:mySql一個insert語句可以插入多條記錄

insert into user (name,age) values('zs',21),('ls',21);

oracle中:oracle中也可用一條語句實現同樣的效果

insert all into user (name,age) values("zs",21)  into user(name,age) values("ls",21) select 1 from dual;

注:插入多個values要重複into後面的語句,最後要加上 select 1 from dual,其中1表示每個values插入

1次,爲幾每個values就插入幾次。

4.更新或插入多條

    如果有好幾個update或insert語句,如果是mysql,可以直接用分號隔開同時執行,

但是oracle中不行。百度的方法大多是加begin...end,commit;等等,試過都沒有用。

老大的方法如下:

            OracleCommand m_cmd = new OracleCommand();            
            OracleTransaction transOra = m_con.BeginTransaction(IsolationLevel.ReadCommitted);
            try
            {
                m_cmd.Transaction = transOra;
                for (int i = 0; i < sCommandList.Length; i++)
                {
                    if (sCommandList[i] != null)
                    {
                        m_cmd.CommandText = sCommandList[i];
                        m_cmd.ExecuteNonQuery();
                    }
                }
                transOra.Commit();
            }
            catch (Exception ex)
            {
                transOra.Rollback();
            }
其中sCommandList是將update或insert語句放到的List中

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章