|
在实际开发中有时需要获取新增加的记录的ID。如以新增加ID为文件名生成静态页等
这里参考了Erist.Protal里的代码 复制代码 代码如下: /// <summary> /// 增加新的文章 /// </summary> /// <param name="ArticleTitle"></param> /// <param name="Author"></param> /// <param name="ArticleFrom"></param> /// <param name="Creator"></param> /// <param name="ModifyBy"></param> /// <param name="Content"></param> /// <param name="ChannelID"></param> /// <param name="IsOnTop"></param> /// <param name="IsCommend"></param> /// <param name="IsCheck"></param> /// <param name="Keyword"></param> /// <param name="ArticleIntroduction"></param> /// <returns>新增加文章的ID</returns> public int AddArticle(string ArticleTitle, string Author, string ArticleFrom, int Creator, int ModifyBy, string Content, int ChannelID, bool IsOnTop, bool IsCommend, bool IsCheck, string Keyword, string ArticleIntroduction) { int ArticleID =-1; //格式化HTML标记 ArticleTitle=System.Web.HttpUtility.HtmlEncode(ArticleTitle); Author=System.Web.HttpUtility.HtmlEncode(Author); Keyword=System.Web.HttpUtility.HtmlEncode(Keyword);
OleDbConnection OleCon=new OleDbConnection(Globals.ConnectString); OleDbCommand OleCmd=new OleDbCommand(); OleCmd.CommandType=System.Data.CommandType.StoredProcedure; OleCmd.Connection=OleCon; OleCmd.CommandText="AddArticle"; //取得下一个ID号 ArticleID= Erist.Common.Data.DataProvider.GetAutoID("ArticleID","Article",Globals.ConnectString); OleCmd.Parameters.Add("ArticleID",ArticleID); OleCmd.Parameters.Add("ArticleTitle",ArticleTitle); OleCmd.Parameters.Add("Author",Author); OleCmd.Parameters.Add("ArticleFrom",ArticleFrom); OleCmd.Parameters.Add("Creator",Creator); OleCmd.Parameters.Add("ModifyBy",ModifyBy); OleCmd.Parameters.Add("Content",Content); OleCmd.Parameters.Add("ChannelID",ChannelID); OleCmd.Parameters.Add("IsOnTop",IsOnTop); OleCmd.Parameters.Add("IsCommend",IsCommend); OleCmd.Parameters.Add("IsCheck",IsCheck); OleCmd.Parameters.Add("Keyword",Keyword); //2004-2-2将文章增加简介属性 姜勇 OleCmd.Parameters.Add("ArticleIntroduction",ArticleIntroduction); //执行 Erist.Common.Data.DataProvider.ExecNonQueryOle(OleCmd); return ArticleID; } 注意看背景色为橙色的地方调用了Erist.Common.Data.DataProvider.GetAutoID() 下面是此方法的代码 复制代码 代码如下: /**//// <summary> /// 取得数据集 /// </summary> /// <param name="SqlCmd">执行命令的SqlCommand</param> /// <returns>返回取得的数据集</returns> public static DataSet GetDataSetOle(OleDbCommand OleCmd ) { OleDbDataAdapter t_DataAdapter ; DataSet t_DataSet=new DataSet(); try { if (OleCmd.Connection.State != ConnectionState.Open) OleCmd.Connection.Open(); t_DataAdapter = new OleDbDataAdapter(OleCmd); t_DataAdapter.Fill(t_DataSet); return t_DataSet; } catch(Exception ex ) //捕获数据层错误并返回给上一层。 { throw ex; } finally { //断开链接 if (OleCmd.Connection.State == ConnectionState.Open) OleCmd.Connection.Close();
} }
/**//// <summary> /// 取得某一表的最大字段值 /// </summary> /// <param name="FieldName"></param> /// <param name="TableName"></param> /// <returns></returns> public static int GetAutoID(string FieldName ,string TableName,string ConnectString) { DataSet ds; OleDbConnection OleCon=new OleDbConnection(ConnectString); OleDbCommand OleCmd=new OleDbCommand(); OleCmd.CommandText="Select Max(" + FieldName +") as MaxID from " + TableName; OleCmd.CommandType=System.Data.CommandType.Text; OleCmd.Connection=OleCon; ds=GetDataSetOle(OleCmd); if( ds.Tables[0].Rows[0][0] == DBNull.Value) { return 1; } else { return int.Parse(ds.Tables[0].Rows[0][0].ToString())+ 1; } } 根据传过来的FieldName 和TableName 来读数据库当前最大的FieldName 如果没有返回1 有则在此基础上+1 因为是要获取要添加记录的唯一FieldName 此处FieldName是ArticleID 此方法还是不错的. |
|