C++编写的程序。
修改数据后,保存数据改动到数据库时出现 “ 对于不返回任何基表信息的SelectCommand不支持动态SQL的生成 ”
void SaveToDatabase(void)
{
DataSet^UpdateDS;
try
{
UpdateDS=SharedData::PatientDataSet->GetChanges();
if(UpdateDS)
{
OdbcCommandBuilder^bu=gcnew OdbcCommandBuilder(Adapter);
Adapter->Update(UpdateDS,"person_info");
SharedData::PatientDataSet->AcceptChanges();
}
}
catch(Exception^e)
{
MessageBox::Show(e->Message);
}
}
是关于主键的问题么?
之前已经设置过了啊
DataRow^FindPatient(String^PatientID)
{
DataTable^PatientTable=SharedData::PatientDataSet->Tables[0];
array<DataColumn^>^keys=gcnew array<DataColumn^>(2);
keys[0]=PatientTable->Columns["id"];
PatientTable->PrimaryKey=keys;
DataRow^row=PatientTable->Rows->Find(PatientID);
return row;
}
求指导!

解决方案 »

  1.   

    找到问题了。。
    OdbcDataAdapter^Adapter;
    void LoadData(void)
    {
    OdbcConnection^ Conn=gcnew OdbcConnection("DSN=monitor;UID=root;PWD=61647470;");
    Adapter=gcnew OdbcDataAdapter("SELECT * FROM person_info",Conn);
    SharedData::PatientDataSet=gcnew DataSet();
    // SharedData::StudentDataSet->Tables[0]->Rows[0]["id_student"];
    Adapter->Fill(SharedData::PatientDataSet,"person_info");
    for each(DataRow^  row in SharedData::PatientDataSet->Tables["person_info"]->Rows)
    {
    listPatientID->Items->Add(row["id"]);
    }
    竟然是Adapter=gcnew OdbcDataAdapter("SELECT * FROM person_info",Conn);
    *两边没加空格