Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / не удается внести изменения в бд / 2 сообщений из 2, страница 1 из 1
25.01.2005, 12:36
    #32882143
13th_apostle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не удается внести изменения в бд
новые ряды в datatable создаются с помощью след. ф-ции:
Код: plaintext
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);
	 }
однако, при попытке записать данные в бд:
Код: plaintext
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. =(((
...
Рейтинг: 0 / 0
25.01.2005, 14:57
    #32882561
13th_apostle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не удается внести изменения в бд
вопрос снимается =). решение было: надо было выставить
Код: plaintext
1.
	 adpCert->UpdateCommand->Parameters->Add(clmName,certTypes[ 0 ],certTypeSz[ 0 ],clmName);
	 adpCert->InsertCommand->Parameters->Add(clmName,certTypes[ 0 ],certTypeSz[ 0 ],clmName);
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / не удается внести изменения в бд / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]