/// <summary> /// 获取最大ID编号 /// </summary> /// <param name="Marking">表示ID的前缀标识</param> /// <param name="DateFormat">日期格式字符串,如yyyyMMdd,yyyyMM</param> /// <param name="SN">以0表示的流水号长度,如果流水号长度是4,就表示为0000</param> /// <param name="ColumnName">表示需要获取最大值的栏位名称</param> /// <param name="TableName">表示需要获取最大值的表名称</param> /// <param name="Columns">SQL条件语句中的栏位名称</param> /// <param name="ColumnValues">SQL条件语句中的栏位名称对应的条件值,只限字符型</param> /// <returns>返回字符串类型的最大ID</returns> public static string GetMaxID(string Marking, string DateFormat, string SN, string ColumnName, string TableName,string[] Columns,string[] ColumnValues) { int MarkingLength = Marking.Length; int SubStringParm1 = MarkingLength + 1; int DFLength = DateFormat.Length; int SNLength=SN.Length; string sqlstr; string addstr=""; string day = DateTime.Today.ToString(DateFormat); sqlstr = @"select Convert(int,isnull(Right(Max(" + ColumnName + ")," + SNLength + "),0))+1 from " + TableName + " where left(" + ColumnName + "," + MarkingLength + ") = '" + Marking + "' and substring(" + ColumnName + "," + SubStringParm1 + "," + DFLength + ")='" + day + "'"; //在查询条件语句加入其他判断条件,但只限字符串类型 if ((Columns!=null) & (ColumnValues!=null)) { if (Columns.Length==ColumnValues.Length) { for(int i=0;i<Columns.Length;i++) { addstr = " and " + Columns[i].ToString() + "='" + ColumnValues[i].ToString() +"' "; } } } sqlstr = sqlstr + addstr; //以下SQL执行过程可以用DBHelp类实现 SqlConnection sqlconn = new SqlConnection(@"Server=./SQLExpress;Database=FightingTest;Uid=sa"); SqlCommand sqlcomm = new SqlCommand(); sqlcomm.Connection = sqlconn; sqlcomm.CommandText = sqlstr; string ret; sqlconn.Open(); SqlTransaction sqltx = sqlconn.BeginTransaction(); try { sqlcomm.Transaction = sqltx; ret = sqlcomm.ExecuteScalar().ToString(); sqltx.Commit(); //返回结果 return Marking+day+ SN.Substring(0,SN.Length-ret.Length)+ret; } catch (Exception ex) { throw ex; sqltx.Rollback(); } finally { sqlcomm.Dispose(); sqlconn.Close(); sqlconn.Dispose(); } }//GetMaxID()结束 调用: string str = GetMaxID("FW", "yyMMdd", "0000000", "csea01c", "cse01", null, null);