最近写的一个小网站,用的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中