关于编号的问题

zqc2010 2012-05-15 12:55:49
浏览了好多帖子,还是没想明白我现在的这种情况,本人刚学,不怕大家笑话

我做了一个新闻管理的功能,用gridview更新,删除news_id,news_name,news_information,因为想在页面上同时做出插入新闻,提交后在gridview上显示出来,然后就在页面设计中做了三个textbox,分别用于输入id,name,infor,但是id我设置的是主键,调试的时候不知道是我写的程序有问题,还是因为id不可以这么做。

若是把id做成自动编号的呢,该怎么处理?我是在asp.net上直接往表里录的信息,没有写sql创建的语句。

这个是我写的提交button后的向数据库里插入的语句:
protected void Button1_Click(object sender, EventArgs e)
{
string sqlstr = "insert into news values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "');";
sqlcon = new SqlConnection(strCon);
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
bind();

}
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
test2050 2012-05-15
  • 打赏
  • 举报
回复
报什么错,你的表字段都是什么类型的?
zqc2010 2012-05-15
  • 打赏
  • 举报
回复
感谢各位~~~运行成功了~~~哈哈,慢慢在这里学习,真好 啊
mathieuxiao 2012-05-15
  • 打赏
  • 举报
回复
你的问题应该不是和id相关,你想如果和id有关系,为什么1-9条数据可以插入成功呢?
从你的错误信息中可以发现,你的问题和分页相关,

错误信息如下:
GridView“GridView1”激发了未处理的事件“PageIndexChanging”。


他的意思就是你指定GridView可以分页,而且默认每页9行,当第10条数据加入进来后需要分页了,但是你没有写分页的处理程序,所以报错。

解决方法:
1、不分页:设置GridView的属性:AllowPaging="False"
2、分页:实现下面这个分页事件处理函数
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex;
GridView1.datasource="数据源";
GridView1.DataBind();
}

zqc2010 2012-05-15
  • 打赏
  • 举报
回复
我要学的东西真是太多了。。。计算机语言博大精深,我慢慢来,如果是真正的系统,要怎么做啊[Quote=引用 3 楼 的回复:]
如果ID是自增长字段,它是不能在插入的时候指定值的,可以把SQL语句改成这样:

sqlstr = "insert into news(name, infor) values('" + TextBox2.Text + "','" + TextBox3.Text + "')"

另外,希望你的代码只是用来练练手的,真正的系统里不能这样,要不然会成为活靶子的。
[/Quote]
zqc2010 2012-05-15
  • 打赏
  • 举报
回复
但是我的数据库建表没有写语句,直接往表里录的,那是不是就没有办法自动编号了
[Quote=引用 5 楼 的回复:]
id是主键 如果不是自动增长的那就得在插入数据库之前做一次判断,判断是否存在该新闻了,不过你可以直接设置为自动增长的。
[/Quote]
laichunlin 2012-05-15
  • 打赏
  • 举报
回复
id是主键 如果不是自动增长的那就得在插入数据库之前做一次判断,判断是否存在该新闻了,不过你可以直接设置为自动增长的。
zqc2010 2012-05-15
  • 打赏
  • 举报
回复
程序是可以运行的,当我往三个textbox 里录入信息,提交以后,页面就提示出错了。
我往news_id的textbox里写的010,之前数据库里已存有9条。
错误信息如下:
GridView“GridView1”激发了未处理的事件“PageIndexChanging”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: GridView“GridView1”激发了未处理的事件“PageIndexChanging”。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[HttpException (0x80004005): GridView“GridView1”激发了未处理的事件“PageIndexChanging”。]
System.Web.UI.WebControls.GridView.OnPageIndexChanging(GridViewPageEventArgs e) +1498451
System.Web.UI.WebControls.GridView.HandlePage(Int32 newPage) +83
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +467
System.Web.UI.WebControls.GridView.RaisePostBackEvent(String eventArgument) +199
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +177
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746


这个事件里面该写什么呢?
还有就是想问,因为刚学,我不知道怎么自动编号,后面我还设计了员工管理,如果想要自动编号该怎么做,一定是要在创建数据库是往sql里写语句么?

effun 2012-05-15
  • 打赏
  • 举报
回复
如果ID是自增长字段,它是不能在插入的时候指定值的,可以把SQL语句改成这样:

sqlstr = "insert into news(name, infor) values('" + TextBox2.Text + "','" + TextBox3.Text + "')"

另外,希望你的代码只是用来练练手的,真正的系统里不能这样,要不然会成为活靶子的。
zqc2010 2012-05-15
  • 打赏
  • 举报
回复
news_id 是nvarcha(10),name ,infor都是text类型的,我在运行一下,我错误贴上来[Quote=引用 1 楼 的回复:]
报什么错,你的表字段都是什么类型的?
[/Quote]

111,126

社区成员

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

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

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