|
не удается внести изменения в бд
#32882143
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
|
новые ряды в datatable создаются с помощью след. ф-ции:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
System::Void AddNewData(System::Object * sender, System::EventArgs * e)
{
DataTable * cert = dsCert->Tables->get_Item(Certif);
DataRow * crtd = dsCert->Tables->get_Item(Certif)->NewRow();
this->AssignCertRow(crtd);
int rwId = 1 ;
if(cert->Rows->Count> 0 )
rwId = Convert::ToInt16(cert->Rows->get_Item(cert->Rows->Count- 1 )->get_Item( 0 )) + 1 ;
crtd->Item[id] = Convert::ToString(rwId);
dsCert->Tables->get_Item(Certif)->Rows->Add(crtd);
}
однако, при попытке записать данные в бд:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
void DBUpdate()
{
Odbc::OdbcType certTypes[] = {OdbcType::Int, OdbcType::VarChar, OdbcType::VarChar, OdbcType::VarChar, OdbcType::VarChar, OdbcType::Date, OdbcType::VarChar};
int certTypeSz[] = {sizeof(OdbcType::Int), 30 , 15 , 30 , 4 , sizeof(OdbcType::Numeric), 255 };
String * updCertCmd = new String(S"update certificate.db set certif_id = ?");//, brand = ?, country = ?, manufacturer = ?, rosstandard = ?, last_date = ?, content = ?");
String * insCertCmd = new String( S"insert into certificate.db (certif_id) values (?)");//, brand, country, manufacturer, rosstandard, last_date, content) values (?, ?, ?, ?, ?, ?, ?)");
String * delCertCmd = new String( S"delete from certificate.db where certif_id = ?");
adpCert->UpdateCommand = new Odbc::OdbcCommand(updCertCmd, connCert);
adpCert->InsertCommand = new Odbc::OdbcCommand(insCertCmd, connCert);
adpCert->DeleteCommand = new Odbc::OdbcCommand(delCertCmd, connCert);
String * clmName = dsCert->Tables->get_Item(Certif)->Columns->get_Item( 0 )->ColumnName->ToString();
adpCert->UpdateCommand->Parameters->Add(clmName,certTypes[ 0 ],certTypeSz[ 0 ]);
adpCert->InsertCommand->Parameters->Add(clmName,certTypes[ 0 ],certTypeSz[ 0 ]);
adpCert->DeleteCommand->Parameters->Add(dsCert->Tables->get_Item(Certif)->Columns->get_Item( 0 )->ColumnName->ToString(),certTypes[ 0 ],certTypeSz[ 0 ],dsCert->Tables->get_Item(Certif)->Columns->get_Item( 0 )->ColumnName->ToString());
try
{
adpCert->Update(dsCert->Tables->get_Item(Certif));
}
catch(System::Exception * e)
{
tbAddress->Text = e->Message->ToString();
tbContent->Text = adpCert->InsertCommand->CommandText->ToString();
}
}
в табл. certificate.db в поле certif_id записывается ед. значение 0 (поле еще и primary key), хотя в datatable значения начинаются с 1. =(((
|
|
|