datagirdview的更新问题

chaye12 2008-07-08 09:06:35
我做的是datagirdview允许客户在线编译,并点击更新按钮后,可以更新数据库中的数据表,但是每次我点击更新都更新不了,我怀疑是自己的连接字符串的问题,
string source = "pcdb.mdb";
string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source;
这样写的连接字符串默认是在跟目录下面吗?
DEBUG下的数据库文件跟跟目录下面的哪个是起作用的?更新代码如下

OleDbConnection olecon = new OleDbConnection(conn);
OleDbDataAdapter da = new OleDbDataAdapter("select * from jsgx", olecon);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

//保存
da.Update(ds);
请各位看看哪里错了,我每次点更新按钮后,跟没更新一样!
...全文
68 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yagebu1983 2008-07-09
  • 打赏
  • 举报
回复

public partial class Form1 : Form
{
Form1数据成员#region Form1数据成员
private DataTable DT = new DataTable();
private SqlDataAdapter SDA = new SqlDataAdapter();
#endregion

Form1构造函数#region Form1构造函数
public Form1()
{
InitializeComponent();
}
#endregion

连接数据库显示数据#region 连接数据库显示数据
private void Form1_Load(object sender, EventArgs e)
{

SqlConnection conn = new SqlConnection("server=127.0.0.1;database=pubs;uid=sa");
SqlCommand SCD = new SqlCommand("select * from tables", conn);
SDA.SelectCommand = SCD;
SDA.Fill(DT);
dataGridView1.DataSource = DT;
}
#endregion

使用Update更新数据库#region 使用Update更新数据库
private void toolStripButton1_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder SCB = new SqlCommandBuilder(SDA);
SDA.Update(DT);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
MessageBox.Show("更新成功!");
}
#endregion
tanxiaolin520 2008-07-08
  • 打赏
  • 举报
回复
又没有任何异常,数据又没有更新。

是不是本身数据库和你查询的数据基本都没有改变?
比如你数据库有100条记录,查询结果是50条,而你更新的时候查询的结果还是50条,这样的话你根本就看不出更新的变化了哦。
chaye12 2008-07-08
  • 打赏
  • 举报
回复
跟目录下的数据库我已经删除了,光DEBUG下面有数据库,不存在覆盖的问题吧!
chaye12 2008-07-08
  • 打赏
  • 举报
回复
try
{
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//保存
da.Update(ds);
dataGridView1.DataSource = ds.Tables[0];
}
也没抓到异常,郁闷!!
tanxiaolin520 2008-07-08
  • 打赏
  • 举报
回复
dataGridView1.DataSource = Over.Tables["ds"].DefaultView;

你重新绑定的时候,try下,看看有没有什么异常。
chaye12 2008-07-08
  • 打赏
  • 举报
回复
OleDbDataAdapter da = new OleDbDataAdapter("select * from jsgx", olecon);

DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
try
{
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//保存
da.Update(ds);

}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
MessageBox.Show("更新成功!");



这是我的部分代码,提示更新成功,并没有抓到错误,

看来代码应该没问题!
  • 打赏
  • 举报
回复
你这段代码写在哪个事件里了?在你的更新事件中打断点,然后看看点击更新后进入到这个断点了吗?
chaye12 2008-07-08
  • 打赏
  • 举报
回复
加上绝对路径也不太对,我也试过了,而且数据源控件里的绝对路径,跟连接字符串里的绝对路径都不一样,郁闷!
快乐乔巴 2008-07-08
  • 打赏
  • 举报
回复
string source = "pcdb.mdb";
加上绝对路径~
快乐乔巴 2008-07-08
  • 打赏
  • 举报
回复
string source = "pcdb.mdb";
加上绝对路径~
wocow2316 2008-07-08
  • 打赏
  • 举报
回复
给你一些更新数据库,代码做参考
public partial class Form1 : Form
{
Form1数据成员#region Form1数据成员
private DataTable DT = new DataTable();
private SqlDataAdapter SDA = new SqlDataAdapter();
#endregion

Form1构造函数#region Form1构造函数
public Form1()
{
InitializeComponent();
}
#endregion

连接数据库显示数据#region 连接数据库显示数据
private void Form1_Load(object sender, EventArgs e)
{

SqlConnection conn = new SqlConnection("server=127.0.0.1;database=pubs;uid=sa");
SqlCommand SCD = new SqlCommand("select * from tables", conn);
SDA.SelectCommand = SCD;
SDA.Fill(DT);
dataGridView1.DataSource = DT;
}
#endregion

使用Update更新数据库#region 使用Update更新数据库
private void toolStripButton1_Click(object sender, EventArgs e)
{
try
{
SqlCommandBuilder SCB = new SqlCommandBuilder(SDA);
SDA.Update(DT);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
MessageBox.Show("更新成功!");
}
#endregion
cowboy0000 2008-07-08
  • 打赏
  • 举报
回复
没试过直接更新的,你可以试试逐条更新

110,926

社区成员

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

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

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