ASP.NET 将TextBox中的内容插入到数据库,并刷新到GridView中

lhw7791086 2012-10-02 10:27:29

点击Button触发,附上Button中的代码:
protected void Button1_Click(object sender, EventArgs e)
{

SqlConnection conn=new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\test.mdf;Integrated Security=True;User Instance=True");

DataSet ds=new DataSet();
SqlDataAdapter daAuthors=new SqlDataAdapter("SELECT * FROM test",conn);
SqlCommandBuilder bldr=new SqlCommandBuilder(daAuthors);

daAuthors.Fill(ds);

DataTable tbl=ds.Tables["Table"];
DataColumn[] colArr=new DataColumn[1];
colArr[0]=tbl.Columns[0];
tbl.PrimaryKey=colArr;

object[] rowVals=new object[4];
rowVals[0] = TextBox1.Text.Trim();
rowVals[1] = TextBox2.Text.Trim();
rowVals[2] = TextBox3.Text.Trim();
rowVals[3] = TextBox4.Text.Trim();

DataRow insertedRow=tbl.Rows.Add(rowVals);
conn.Open();
daAuthors.Update(ds);

数据库是我自建的,里面又自建了个表,共4列:ID,Name,Add,Tel。其中ID设为主键。
在4个TextBox输入值后,点击BUTTON,出现错误提示:

列“ID”被约束为是唯一的。值“10”已存在。
错误行在: DataRow insertedRow=tbl.Rows.Add(rowVals);

虽然报错,但是当我进入数据库时,发现表中数据已经被添加更新了,就是TextBox中输入的数据,而且ID的值也是刚才输入的值。
不知道为什么会出现这种情况?不知道跟ID设为主键有没有关系?求教。我是新人,基础比较弱。。。
...全文
373 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhw7791086 2012-10-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

String sql = "INSERT INIO test (Name,Add,Tel) Values(@Name,@Add,@Tel)";
conn.Open();
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.Parameters.AddWithValue("@Name",TextBox1.Text);
cmd.Parameters.……
[/Quote]

谢谢
孟子E章 2012-10-03
  • 打赏
  • 举报
回复
String sql = "INSERT INIO test (Name,Add,Tel) Values(@Name,@Add,@Tel)";
conn.Open();
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.Parameters.AddWithValue("@Name",TextBox1.Text);
cmd.Parameters.AddWithValue("@Add",TextBox2.Text);
cmd.Parameters.AddWithValue("@Tel",TextBox3.Text);
cmd.ExecuteNonQuery();
cmd = new SqlCommand("SELECT * FROM test",conn);
SqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
conn.Dispose();
lhw7791086 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

最好不要让用户输入id,而在数据库中设置为自动增长。

因为用户插入了2条记录,id一样,而主键必须是唯一的,就会出现这样的错误。
[/Quote]

我建的表,共4列:ID,Name,Add,Tel,如果将ID设置为主键,然后并设置为自动增长。那么我想将TextBox1,TextBox2,TextBox3中的值分别插入到表中对应的Name,Add,Tel(相当于ID不插),请问该如何改代码?
lhw7791086 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你数据库中没设置主键,而你的DataTable里面设置了主键
[/Quote]

我建的表,共4列:ID,Name,Add,Tel,那如果将ID设置为主键,然后并设置为自动增长。那么我想将TextBox1,TextBox2,TextBox3中的值分别插入到表中对应的Name,Add,Tel(相当于ID不插),请问该如何改代码?
threenewbee 2012-10-02
  • 打赏
  • 举报
回复
最好不要让用户输入id,而在数据库中设置为自动增长。

因为用户插入了2条记录,id一样,而主键必须是唯一的,就会出现这样的错误。
licai1210 2012-10-02
  • 打赏
  • 举报
回复
你数据库中没设置主键,而你的DataTable里面设置了主键

61,651

社区成员

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

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

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

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