求一个高手写个C#方法(在线等)

cjxlj11 2004-11-22 02:50:50
方法的功能就是产生一个人员编码的规则:
我每次新建一条人员信息记录时在数据库中要产生一个人员编号的主键行记录,它是按顺序递增的.它的组成方式是(12位的公安机构代码+7位的顺序码)构成一个人员编码(顺序码递增),请高手帮帮了.
...全文
434 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
greennetboy 2004-11-23
  • 打赏
  • 举报
回复
用padLeft('0',7),这样每次生成的id都是7位的,而且每次加一,不好意思,前面忘了写了
greennetboy 2004-11-23
  • 打赏
  • 举报
回复
用padLeft('0',7),这样每次生成的id都是7位的,而且每次加一,不好意思,前面忘了写了
lzz333 2004-11-23
  • 打赏
  • 举报
回复
up
sharbey 2004-11-23
  • 打赏
  • 举报
回复
学习中
lijie7552 2004-11-23
  • 打赏
  • 举报
回复
12位的公安机构代码 7位的顺序码 再数据库中用两个子段保存。 顺序码用Identity.
不过有个问题,如果删除了,那么这个顺序会有断开。
或者用触发器。
hnhl 2004-11-23
  • 打赏
  • 举报
回复
SqlScript
-------
use Northwind
go
create table human
(
code varchar(19) not null,
name varchar(10) not null,
primary key (code)
)
go
--测试数据
insert into human select '1234567891230000001','aaa'
union all select '1234567891230000002','bbb'
union all select '1234567891230000003','CCC'

------
cs文件
-------
using System;
using System.Data;
using System.Data.SqlClient;
public class Test
{
public Test()
{

}
/// <summary>
/// 取得指定的字段当前在数据库中的最大值
/// <para>多用于累增字段的赋值</para>
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="fieldName">带取字段名</param>
/// <returns>最大值</returns>
public object GetFieldMaxValue(string tableName, string fieldName,string condition)
{
SqlConnection con=new SqlConnection();
con.ConnectionString="user id=sa;password=;initial catalog=Northwind;data source=(local);Connect Timeout=3000";
try
{
//对相关表查询
con.Open();

string strsql="";
if(condition != null && condition!="" )
{
strsql = "SELECT MAX(Substring(" + fieldName + ",13,len( " + fieldName +")-12)) FROM " + tableName + " WHERE " + condition;
}
else
{
strsql = "SELECT MAX(Substring(" + fieldName + ",13,len( " + fieldName +")-12)) FROM " + tableName;
}
SqlCommand com=new SqlCommand(strsql,con);
object obj =com.ExecuteScalar();
if(obj!=null)
{
return obj;
}
else
{
return null;
}
}
catch(System.Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
}
public class TestApp
{
public static void Main()
{
Test t=new Test();
object obj=t.GetFieldMaxValue("human","code","");
if(obj!=null)
{
Console.WriteLine("流水号最大值为:{0}",obj.ToString());
}
else
{
Console.WriteLine("没有纪录");
}
}
}
Uncommon 2004-11-23
  • 打赏
  • 举报
回复
>>>>cjxlj11(cjx)
兄弟:
1、如果行政区划中没有(譬如开发区公安分局),你如何处理?
2、你的警种代码在7-8位还是其他位置?
3、你所谓组织机构的规则是什么?
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
请问字符串相加,这样对吗
s="0000001";
t=s+1;这样不是等于2了吗我如何保持"0000002",如果加到10前面的如何补呢?
greennetboy 2004-11-22
  • 打赏
  • 举报
回复
从数据库中读取最大id影响性能,不如放到文本文件里亚,每次添加记录的时候,从文本文件中读取最大id, 添加成功后将文本文件中的id+1,这样效果很好的
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
前六位当然是行政区华后六位是组织机构
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
你问这啥意思我是公安局的
Uncommon 2004-11-22
  • 打赏
  • 举报
回复
>>>>cjxlj11(cjx)
兄弟:
你是哪里的?
你的“12位的公安机构代码”的编写规则是什么?
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
谢谢你的方法,我要好好学习学习不会少给你的
alias88 2004-11-22
  • 打赏
  • 举报
回复
else
newID=start + (int.Parse (newID.Substring (12))) +1).ToString();
alias88 2004-11-22
  • 打赏
  • 举报
回复
你真是晕呀 :) ,难怪说给一半分 :):D

string maxid="",newID="",start="你的公安机构号";
maxid=GetMaxID("人员表","人员编号",start,你的数据库连接);
if (maxid.ToString() == string.Empty)
newID=start + "0000001";
else
newID=newID.Substring(0,11) + (int.Parse (newID.Substring (12))) +1).ToString();
return newID;
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
你只不过做了一个查询,查到了最大记录,那摸如何自增的产生编号的方法呢?
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
给你18分
alias88 2004-11-22
  • 打赏
  • 举报
回复
/// <summary>
/// 在物里表中获得最大的一个ID
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="fldID">ID字段名</param>
/// <param name="pStart">前导字符</param>
/// <returns>object</returns>
public static object GetMaxID(string TableName ,string fldID ,string pStart ,SqlConnection mConnection )
{
SqlConnection con=new SqlConnection (mConnection.ConnectionString );
try
{
string strSQL ;
pStart=pStart.Trim ();
strSQL = "select max([" + fldID + "]) from [" + TableName + "] " + " where " + fldID + " like '" + pStart + "%'" ;

con.Open ();
SqlCommand cmd=new SqlCommand(strSql,con);
return cmd.ExecuteScalar ();
}
finally
{
con.Close ();
}

}
greennetboy 2004-11-22
  • 打赏
  • 举报
回复
呵呵,搂主怒了亚,大家谁有好的办法赶紧写出来吧,我上面的那个是我在做超市管理系统时想出来的,不知道正确不,大家都发表一下自己的做法亚
cjxlj11 2004-11-22
  • 打赏
  • 举报
回复
简单你写呀,我是菜我不会,这不是在求人吗,那你既然进来了就写吧
加载更多回复(12)
扩展功能: a. 首先满足网友的”口味”, 重新设计了所有旗子, 选择新的旗盘背景, 换了一个更清爽的面. (界面配色并不是件很容易的事情, 这样的棋类游戏长时间容易使眼睛疲劳, 首先要做到选择的色彩 不刺激眼睛,其实大部分色彩都比较刺激眼睛,尤其是纯三基色(红/黄/蓝), 还要使界面做得漂亮). b. 增加”回放” 功能. 当下完旗子时,可以重新回味一下, 刚杀完的一盘旗,可以寻找不足和重新感受 一下胜利的喜悦! 这个功能比较复杂! d. 又看了一下电脑走旗, 感觉确实比较难处理, 没有人指点写这个算法确实比较难, 应该比以前聪明 了一些, 但是还是比较笨, 打算有空去找个现在的电脑走旗组件替换上, 自己的电脑走旗算法慢慢研 究(当时是因为实在找不到现在的组件, 自己写了个较笨的,如果哪位朋友能够提供组件,在次深表感谢!!!). e. 扩展走旗的步数容量, 有些网友, 对战的都是手, 产生数组越界, 这次从 200 扩展到了500, 当然 您还可以扩展到更大,因为源代码已经开放). f. 增加图像缓存功能. g. 解决 .net 从framework 1.0到framework 2.0升级出现的程式升级逻辑问题及一个小bug. h. 本来我只是想把这个程式放到Blog上, 供爱好c#的网友学习,一起交流一下, 没想到反应那么的强烈! 经常收到网友的反馈邮件, 从下载量看,不到一年仅从我的下载空间(不算网友转载下载次数)就有近 二万五千次. 所以又重新看懂已经基本忘记的代码,修复了bug,并扩展了以上功能. 有可能还会增加一些功能! 另外,在此对给我提交建议和bug的朋友表示感谢!!! (开发语言: C#语言) 来自:http://community.csdn.net/Expert/topic/5237/5237003.xml?temp=.4600031

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧