请教关于asp.net自动生成编号问题

mengguyongshi 2009-10-11 12:38:45
我做了个留言板,添加记录时想让程序自动生成一个编号,用的datareader,也实现了。不足之处是当数据表里没有记录时会出错。哪位大哥能出个主意怎么解决出错问题?非常感谢

我的代码如下:

//编号自动累加================

//连接数据库
OleDbConnection myconn = Class1.getconn();
myconn.Open();

varneirong = HtmlEncode(varneirong);

//编号自动累加================
OleDbCommand cmm0 = new OleDbCommand("select bianhao from biao order by bianhao desc", myconn);
OleDbDataReader dr = cmm0.ExecuteReader();
if (dr.Read())
{
int mybianhao = Convert.ToInt16(dr["bianhao"])+1;
string varbianhao = mybianhao.ToString();

OleDbCommand cmm = new OleDbCommand("insert into biao(username,bianhao,neirong) values('" + varname + "','" + varbianhao + "','" + varneirong + "')", myconn);
cmm.ExecuteNonQuery();

Response.Write("<script>window.location='edit.aspx'</script>");
}
...全文
329 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
peipeiabc 2011-07-26
  • 打赏
  • 举报
回复
学习!
PandaIT 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jijunwu 的回复:]
直接 设置数据库字段  主键  标识符(自增)
[/Quote]

正解!!
  • 打赏
  • 举报
回复
直接 设置数据库字段 主键 标识符(自增)
mengguyongshi 2009-10-11
  • 打赏
  • 举报
回复
终于解决了,感谢各位!

//编号自动累加================
OleDbCommand cmm0 = new OleDbCommand("select bianhao from biao order by bianhao desc", myconn);
OleDbDataReader dr = cmm0.ExecuteReader();

int mybianhao = 0;
if (dr.Read())
{
mybianhao = Convert.ToInt16(dr["bianhao"]) + 1;
}
else
{
mybianhao = 1001;
}
string varbianhao = mybianhao.ToString();
Response.Write(varbianhao);


//招待执行插入操作
OleDbCommand cmm = new OleDbCommand("insert into biao(username,bianhao,neirong) values('" + varname + "','" + varbianhao + "','" + varneirong + "')", myconn);
cmm.ExecuteNonQuery();

Response.Redirect("edit.aspx");
//==========================
冷眼1983 2009-10-11
  • 打赏
  • 举报
回复
顶一个哦
lovexilove 2009-10-11
  • 打赏
  • 举报
回复
自动增长多好用啊
  • 打赏
  • 举报
回复

int mybianhao=0;
if(dr["bianhao"]==null)
mybianhao=1001;
else
mybianhao=Convert.ToInt16(dr["bianhao"])+1;
//...

mengguyongshi 2009-10-11
  • 打赏
  • 举报
回复
采取各们的建议,用下面的形式成功了,表里没记录时就不添加。
如果我想要的效果是,没有记录时就让编号为1001,那怎么写?


if (dr.Read())
{
if (dr["bianhao"] == null) return;

int mybianhao = Convert.ToInt16(dr["bianhao"])+1;
string varbianhao = mybianhao.ToString();

OleDbCommand cmm = new OleDbCommand("insert into biao(username,bianhao,neirong) values('" + varname + "','" + varbianhao + "','" + varneirong + "')", myconn);
cmm.ExecuteNonQuery();

Response.Write("<script>window.location='edit.aspx'</script>");
}
mengguyongshi 2009-10-11
  • 打赏
  • 举报
回复
有道理,不过我直接把这句复制到前边,提示错误。
我是新手,不明白是不是语法有错。
zhxingway 2009-10-11
  • 打赏
  • 举报
回复
其实自动编号也挺好的,不能用就有点费解了.
zhxingway 2009-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xifenfei 的回复:]
int mybianhao = Convert.ToInt16(dr["bianhao"])+1;
在这个之前加上一个if(dr["bianhao"]==null) return null;
就可以了,因为你没有数据,进行Convert.ToInt16转换错误
[/Quote]

这个可以,呵呵 .
惜分飞 2009-10-11
  • 打赏
  • 举报
回复
int mybianhao = Convert.ToInt16(dr["bianhao"])+1;
在这个之前加上一个if(dr["bianhao"]==null) return null;
就可以了,因为你没有数据,进行Convert.ToInt16转换错误
mengguyongshi 2009-10-11
  • 打赏
  • 举报
回复
自动编号这里不能用,想自己通过程序累加后添加进去。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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