dataGridView 与数据库绑定

jcyluck 2009-04-22 03:32:27
操作SQL数据库时dataGridView与 datatable绑定
adapter.Update(datatable);只能更新有主键的表吗?
对于没有主键的表,大家是如何让dataGridView 与 datatable同步更新的?
...全文
172 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jcyluck 2009-04-23
  • 打赏
  • 举报
回复
添加标识列对插入,更新的效率影响很大
如果要使用DATAGRIDVIEW的绑定,并用adapter.Update(datatable) 更新
一定要有主键吗?
Jelly_tracy 2009-04-23
  • 打赏
  • 举报
回复
应该是可以加一个标识列的吧?
jcyluck 2009-04-23
  • 打赏
  • 举报
回复
楼上不是用 adapter.Update(datatable) 更新
无意义
冷月孤峰 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jcyluck 的回复:]
添加标识列对插入,更新的效率影响很大
如果要使用DATAGRIDVIEW的绑定,并用adapter.Update(datatable) 更新
一定要有主键吗?
[/Quote]
是的,adapter.Update(datatable) 更新必须要有主键!
fdc123 2009-04-22
  • 打赏
  • 举报
回复
没有也行 不过就是那一列别有重复的数据就行了
string text1 = this.textBox1.Text;
string text2 = this.textBox2.Text;
DateTime text3 = DateTime.Parse(this.textBox3.Text);
string text4 = this.textBox4.Text;
string text5 = this.textBox5.Text;
string text6 = this.textBox6.Text;
try
{
DialogResult result = MessageBox.Show("修改确认!", "您是否确定要修改记录?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
db.open();
string sql = @"update standard set StandardName='"+text1+"',Published='"+text3+"',nationalstandard='"+text4+"',railwaystandard='"+text5+"',internationalstandard='"+text6+"'where standardid= '"+text2+"'";
int intexec = db.enqsqlcomm(sql);
if (intexec > 0)
MessageBox.Show("更改成功!");
db.close();
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
uncleson88 2009-04-22
  • 打赏
  • 举报
回复
数据库里的表一定要有主键吧~~~~不然数据结构不完整,索引无法进行.
LZ的情况可以加一个标识列作为主键
jcyluck 2009-04-22
  • 打赏
  • 举报
回复
数据库中的表是不可以有主键的,这是数据本身的限制
但查询出来后的表可以保证可以设置主键的:
如:
原表:
C1 C2 C3
A AA AB
A BA BB
B AA AB
B BA BB

查询C1列只为A的记录

C2 C3
AA AB
BA BB

则C2列可以保证不存在重复记录,我尝试设置tablename.PrimaryKey 还是不行
string str = "select * from usr_mf";

conn = new SqlConnection("");
SqlCommand com = new SqlCommand(str, conn);
conn.Open();
tablename = new DataTable();
adapter = new SqlDataAdapter(com);
scb = new SqlCommandBuilder(adapter);

adapter.Fill(tablename);
DataColumn[] keys = new DataColumn[1];
keys[0] = tablename.Columns[0];
tablename.PrimaryKey = keys;//设置一个主键

dataGridView1.DataSource = tablename;

请问还有其他方法吗
杏鲍菇 2009-04-22
  • 打赏
  • 举报
回复
没看懂,学习一下
麻子Mozart 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 CeShenBeiWang 的回复:]
没有主键,只要有一个字段是唯一的就可以啊
还可以动态的创建一个GUID列来做为临时列操作数据库
[/Quote]
学习~~~~~~~
CeShenBeiWang 2009-04-22
  • 打赏
  • 举报
回复
没有主键,只要有一个字段是唯一的就可以啊
还可以动态的创建一个GUID列来做为临时列操作数据库

110,538

社区成员

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

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

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