为什么我的DataAdapter-> Update不能在新表单上运行?

时间:2012-06-11 14:36:00

标签: windows visual-c++ c++-cli

我有一张主表格。有一个链接标签。如果我点击它,将打开一个新表单,并在其上有一个数据网格和一个按钮。 datagrid将填充新表单Load事件的数据。 我以这种方式绑定数据源:

void BindDataSource( BindingSource^ BS, SqlDataAdapter^ DA, DataGridView^ DG, String^ SQLCommand )
{
DG->DataSource = BS;

//InsertDataToDataGrid( "select * from myTable", dataGridView10 );  
String^ connectionString = "database=myDataBase;server=myServer;UID=UserID;PWD=Password;";

// Create a new data adapter based on the specified query.
DA = gcnew SqlDataAdapter( SQLCommand, connectionString);

gcnew SqlCommandBuilder( DA );

DataTable^ table = gcnew DataTable();
DA->Fill( table );
BS->DataSource = table;

}//BindDataSource

如果我点击按钮,它应该保存更改。

我这样保存:
   dAPcExceptions->Update( ( DataTable^ )bSPCExceptions->DataSource );

我在主窗体上使用此方法,它工作正常。 但是如果我点击按钮我会收到错误:
update requires a valid updatecommand when passed datarow collection with modified rows

有人能告诉我我做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我想你正在创建一个SqlDataAdapter并将其返回以备将来使用。因此,您必须使用轨道引用将SqlDataAdapter参数作为输入/输出。

void BindDataSource( BindingSource^ BS, SqlDataAdapter^% DA, DataGridView^ DG, String^ SQLCommand ) 
{
...
// Create a new data adapter based on the specified query.
DA = gcnew SqlDataAdapter( SQLCommand, connectionString);
...
}//BindDataSource