一个数据库更新问题!急!急!急!

时间:2022-12-13 11:51:27
当我插入行的时候,报如下错误:

未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。

其他信息: Update 无法找到 TableMapping['TableName'] 或 DataTable“TableName”。

我一个按钮事件如下(其他部分省略):
private void buttonAppend_Click(object sender,    System.EventArgs  e)
{

//清空数据集
dataSet1.Clear();

//连接数据库
Mcl.DataModules.DMSqlServer MyDMnew2 = new Mcl.DataModules.DMSqlServer();
MyDMnew2.SelectData(dataSet1,"Select * from Chat","Chat");
dataGrid1.DataSource = dataSet1.Tables["Chat"].DefaultView;

//创建并生成新的行
dataTable1 = dataSet1.Tables[0];
DataRow newRow = dataTable1.NewRow();
newRow["ChatID"] = textBoxChatID.Text;
newRow["FMobTel"] = textBoxFMobTel.Text;
newRow["TMobTel"] = textBoxTMobTel.Text;
newRow["CDateTime"] = textBoxCDateTime.Text;
newRow["Message"] = textBoxMessage.Text;
          
//向表中添加新的行
dataTable1.Rows.Add(newRow);

//更新数据库
MyDMnew2.UpdateData(dataSet1,"Chat");
MessageBox.Show("数据已经添加到表Chat中!","信息");

//重新生成dataGrid
MyDMnew2.SelectData(dataSet1,"Select * from Chat","Chat");
dataGrid1.DataSource = dataSet1.Tables["Chat"].DefaultView;         
  
}     

MyDMnew2.UpdateData方法如下(其他部分省略):

public void UpdateData(DataSet DataSet, string TableName)
{
SqlDataAdapter DataAdapter = new SqlDataAdapter();
DataAdapter.Update(DataSet,"TableName");
DataAdapter.Dispose(); 
}

9 个解决方案

#1


DataAdapter.Update(DataSet,"TableName");把TableName 的双引号去掉就好啦

#2


//I think you should use SqlCommandBuilder like:

public void UpdateData(DataSet DataSet, string TableName)
{
//SqlDataAdapter DataAdapter = new SqlDataAdapter(); I think this sentance will
// be wrote at beginning.
SqlCommandBuilder cmb = new SqlCommandBuilder(DataAdapter);
DataAdapter.Update(DataSet,"TableName");
DataAdapter.Dispose(); 
}

#3


楼上兄弟,按照你说的做了,又报如下错误!

未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。

其他信息: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。

#4


rouser(明灭由心) :

你的程序怎么怪怪的呢?

cmb 做什么用的哦?

#5


自己顶一下!

#6


to  snof(雪狼) 
DataAdapter.Update(DataSet,"TableName");把TableName 的双引号去掉就好啦
这样会连编译都通不过的吧^_^0
    我刚学C#3天。也在搞数据库。不过我用的是firebird的数据库。用odbcDataAapter连时系统只能生成select与insert语句。delect和update生成不了。是个叉叉。(连mssql的程序全能生成的,老大要用正版的数据库,又不让用MYSQL,说性能差。不完善。所以只能用免费的firebird。)
    所以就不能用系统的update简单了事了吧。能不能给点绕过去的方法.我不想自己写sql语句,我sql很差的。而且那样可能要每改一条就写一次。

#7


DataAdapter.Update(DataSet,"TableName")的双引号确是要去掉的!
但是我的编译是可以通过的,就是执行的时候是不能通过!
能否有解决办法呢!

#8


自己顶一下!

#9


怎么没有人理我啊!?

#1


DataAdapter.Update(DataSet,"TableName");把TableName 的双引号去掉就好啦

#2


//I think you should use SqlCommandBuilder like:

public void UpdateData(DataSet DataSet, string TableName)
{
//SqlDataAdapter DataAdapter = new SqlDataAdapter(); I think this sentance will
// be wrote at beginning.
SqlCommandBuilder cmb = new SqlCommandBuilder(DataAdapter);
DataAdapter.Update(DataSet,"TableName");
DataAdapter.Dispose(); 
}

#3


楼上兄弟,按照你说的做了,又报如下错误!

未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。

其他信息: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。

#4


rouser(明灭由心) :

你的程序怎么怪怪的呢?

cmb 做什么用的哦?

#5


自己顶一下!

#6


to  snof(雪狼) 
DataAdapter.Update(DataSet,"TableName");把TableName 的双引号去掉就好啦
这样会连编译都通不过的吧^_^0
    我刚学C#3天。也在搞数据库。不过我用的是firebird的数据库。用odbcDataAapter连时系统只能生成select与insert语句。delect和update生成不了。是个叉叉。(连mssql的程序全能生成的,老大要用正版的数据库,又不让用MYSQL,说性能差。不完善。所以只能用免费的firebird。)
    所以就不能用系统的update简单了事了吧。能不能给点绕过去的方法.我不想自己写sql语句,我sql很差的。而且那样可能要每改一条就写一次。

#7


DataAdapter.Update(DataSet,"TableName")的双引号确是要去掉的!
但是我的编译是可以通过的,就是执行的时候是不能通过!
能否有解决办法呢!

#8


自己顶一下!

#9


怎么没有人理我啊!?