最近寫的一個小網站,用的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中