怎样使datagridview中显示的数据改变的更新到数据库,没改变的不更新到数据库

lx3zzwl 2014-01-21 11:15:40
如题,求助各位大哥!代码如下!我写的这代码时而好用时而不好用,比如说:数据库中有空行6行,我只想改第一行为1,结果6行全変1了,或者说第6行変1了,第一行还是空的。请各位多多指教,我是一个大二的学生,是一个初学生。谢谢了!新年快乐
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OracleClient;

namespace 药局管理系统
{
public partial class Form4 : Form
{
int i;
public static bool isValueChange=false;
private DataTable dt = new DataTable();
private OracleDataAdapter da = new OracleDataAdapter();

public Form4()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;

}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}

private void button1_Click(object sender, EventArgs e)
{

dt = dataGridView1.DataSource as DataTable;//把DataGridView绑定的数据源转换成DataTable
OracleCommandBuilder cb = new OracleCommandBuilder(da);
da.Update(dt);
dt.Clear();
da.Fill(dt);
//da.Update((DataTable)bindingSource1.DataSource);
MessageBox.Show("更新成功");


}

private void Form4_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“dataSet4.D04”中。您可以根据需要移动或移除它。
//this.d04TableAdapter.Fill(this.dataSet4.D04);
// TODO: 这行代码将数据加载到表“dataSet4.R20”中。您可以根据需要移动或移除它。
//this.r20TableAdapter.Fill(this.dataSet4.R20);

OracleConnection cn = new OracleConnection("Data Source=orcl;user=ehis;password=Ehis;");
//cn.Open();

OracleCommand com = new OracleCommand("select R01,R02,R03,R04,R06,R07,R08,R10,R11,R12,R13,R14 from R20 ", cn);
da = new OracleDataAdapter(com);
DataTable dt = new DataTable();
//dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
da.Fill(dt);
this.dataGridView1.DataSource = dt;

}
...全文
478 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2014-01-24
  • 打赏
  • 举报
回复
自己写sql代码更新下就行了。
feiyun0112 2014-01-24
  • 打赏
  • 举报
回复
OracleCommandBuilder cb = new OracleCommandBuilder(da);
你这是自动生成的updatecommand,看看具体的sql是什么
花败又谁睬 2014-01-24
  • 打赏
  • 举报
回复
引用 11 楼 yuwenge 的回复:
自己写sql代码更新下就行了。
樓上說的没错,用sql 语句更新 不要用 girdview 自带的修改功能 给你推荐个方法 数据表现设置主键:比如ID Guid 这种唯一值 然后点开GridView 的属性 设置 GridView 的DataKey属性 设置成刚设置的主键 然后在GridView 的RowDataBound事件里获取主键 并根据 所获取的主键 将主键值 传到dbclick 弹出的窗体里面 最后根据主键更新修改的值 下面是获取主键和添加双击事件 以及鼠标悬停时背景色的一些事件 自己看了 if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.RowType != DataControlRowType.Header)//鼠标在表头背景不变 { LinkButton btn = (LinkButton)(e.Row.FindControl("IBTN_detail")); LinkButton btn_repair = (LinkButton)(e.Row.FindControl("IBTN_Repair")); string ID = GV_DETAIL.DataKeys[e.Row.RowIndex].Value.ToString(); //得到当前行数据ID号 //查看明細和維修 當鼠標懸浮時 背景顏色改變 btn.Attributes.Add("onmouseover", "this.style.Color='Fuchsia'"); btn.Attributes.Add("onmouseout", "this.style.Color='#ffffff'"); btn_repair.Attributes.Add("onmouseover", "this.style.Color='Fuchsia'"); btn_repair.Attributes.Add("onmouseout", "this.style.Color='#ffffff'"); //為查看明細和維修按鈕 添加單機事件 string l_strbtn = "openPublish('Form_AbnormalNotice_Publish.aspx?infotype=3&id= " + ID + "&Rnd=" + logic.GetNextDouble() + "',2)"; string l_strrepair = "openPublish('Form_AbnormalNotice_Publish.aspx?infotype=2&id= " + ID + "&Rnd=" + logic.GetNextDouble() + "',2)"; btn.Attributes.Add("onclick", l_strbtn); btn_repair.Attributes.Add("onclick", l_strrepair); e.Row.Attributes.Add("ondblclick ", l_strbtn);
lx3zzwl 2014-01-23
  • 打赏
  • 举报
回复
8楼大哥 我的代码都在这里 是全的 还是你的意思是说让我写成你写的那样啊?小弟不太理解哈
feiyun0112 2014-01-22
  • 打赏
  • 举报
回复
看看da.UpdateCommand.CommandText是怎么写的
衣舞晨风 2014-01-22
  • 打赏
  • 举报
回复
根据你想要的结果,写sql来更新数据库吧,
lx3zzwl 2014-01-22
  • 打赏
  • 举报
回复
来人啊 帮我解决下额 谢谢了啊
Neusoft06 2014-01-21
  • 打赏
  • 举报
回复
一般都是写SQL文 更新的吧
lx3zzwl 2014-01-21
  • 打赏
  • 举报
回复
2楼和3楼大哥的意思是你表里的主键吗?我表里的主键是R01+R02呀
bdmh 2014-01-21
  • 打赏
  • 举报
回复
肯定是没有按主键更新
feiyun0112 2014-01-21
  • 打赏
  • 举报
回复
select R01,R02,R03,R04,R06,R07,R08,R10,R11,R12,R13,R14 from R20
这些列里面有key吗?

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
double22822 2014-01-21
  • 打赏
  • 举报
回复
建议到网上搜索一下用dataSet和DataAdapter更新数据库,我也没代码,不好意思啊!

110,536

社区成员

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

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

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