DataGridView 与数据库同步更新问题!(100分)
研究好一段时间!网上的方法也搜了许多!帮修改下下面的这个函数!
去掉try ...cath...会报一个错误如下:
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
C# code
public static bool updateGridView(DataGridView dgv)
{
OleDbConnection con = GreatConn();
OleDbDataAdapter oda = new OleDbDataAdapter("select * from employee",con );
try
{
if (oda != null)
{
DataTable dt = new DataTable();
oda.Fill(dt);
dgv.DataSource = dt;
}
if (oda != null)
{
OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(oda);
OleDbCommand cmd = cmdbuilder.GetUpdateCommand();
oda.UpdateCommand = cmd;
oda.Update((DataTable)dgv.DataSource);
}
return true;
}
catch
{
return false;
}
}
------解决方案--------------------
给employee表添加一列主键或设置一列unique列!
------解决方案--------------------
if (oda != null)
{
DataTable dt = new DataTable();
oda.Fill(dt);
dgv.DataSource = dt;
}
if (oda != null)
{
OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(oda);
OleDbCommand cmd = cmdbuilder.GetUpdateCommand();
oda.UpdateCommand = cmd;
oda.Update((DataTable)dgv.DataSource);
}
两个条件判断怎么都是一样的?
------解决方案--------------------
楼主应把SQL语句的*去掉,把列名列出来,或者在更新命令中指定列名和参数,不然就会出错。
当然,一个表最好有主键,否则,将把所有的字段均作为更新的WHERE条件,此时,若有一个值是空值,很可能会引发
异常