首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

数据库 备案编号解决办法

2012-05-02 
数据库 备案编号我想在数据库中设计一个字段(beianbianhao),然后让其按一定的规则进行自动排序。设计成XXXX

数据库 备案编号
我想在数据库中设计一个字段(beianbianhao),然后让其按一定的规则进行自动排序。
设计成XXXX-YYYY其中XXXX表示年份,YYYY表示自动编号。列如:20120001
先谢谢大家!


[解决办法]
要不说这个世界还真是巧,真是有缘啊。。。。
我搞好有个一模一样的功能。。。。直接复制了。

C# code
public string getLog_No()        {            string strTemp="";            string sql="select * from (select nvl(log_no,'0') from equip_change_logic t order by log_id desc) where rownum<=1";            MyOraComm.ConnForOracle cfo=new MyOraComm.ConnForOracle("connstr");            cfo.OpenConn();            System.Data.OracleClient.OracleDataReader oraDataRead=cfo.ReturnDataReader(sql);            if(oraDataRead.Read())                strTemp=oraDataRead[0].ToString();            else                strTemp="0";            oraDataRead.Close();            cfo.CloseConn();            if(strTemp.Length==7)            {                string year,xuhao;                year=strTemp.Substring(0,4);                xuhao=strTemp.Substring(4,3);                if(year==System.DateTime.Now.ToString("yyyy"))                {                    strTemp=(int.Parse(strTemp)+1).ToString();                }                else                    strTemp=System.DateTime.Now.ToString("yyyy")+"001";            }            else            {                strTemp=System.DateTime.Now.ToString("yyyy")+"001";            }            return strTemp;        }
[解决办法]
用纯粹的sql效率会比较高些。

create table #temp(
Id int identity(1,1),
DDateTime datetime
)
go

insert into #temp(DDateTime)
select '2010-1-1'
union all
select '2011-2-1'
union all
select '2012-1-1'
union all
select '2011-4-1'
union all
select '2010-1-1'

select *,datepart(year,DDateTime)*1000+id from #temp order by datepart(year,DDateTime)*1000+id asc

热点排行