visual c++ 2008 eroare la DataColumn pt PrimaryKey

Intrebari despre limbajul C++/CLI (si versiunile mai vechi MC++), applicatii mixed-mode sau probleme specifice .NET legate de C++.
Post Reply
alfred1111
Junior
Junior
Posts: 8
Joined: 27 Jul 2008, 10:52
Judet: Brăila

visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by alfred1111 » 27 Jul 2008, 11:22

Buna ziua,
Nu stiu cum sa trec de eroarea care nu imi permite sa declar o PrimaryKey in DataColumn

Code: Select all

OleDbConnection^ cnNwind = gcnew OleDbConnection();
	cnNwind->ConnectionString =
	L" Provider=Microsoft.Jet.OLEDB.4.0; "
	L"Data Source=C:\\vc2008\\northwind.mdb";
	cnNwind->Open();
	Console::WriteLine(L"Connected to database successfully!");
	DataSet^ dataset = gcnew DataSet();

	//parentTable
	DataTable^ parentTable = gcnew DataTable("Orders");
	DataColumnCollection^ cols = parentTable->Columns;
	String^ expr="OrderID";
	DataColumn^ column = cols->Add(expr);
	cols->Add("CustomerID");
 	System::Data::DataTable^ table = gcnew DataTable;

    column = gcnew DataColumn();
	column->DataType = System::Type::GetType("System.Int32");
	column->ColumnName = "OrderID";
	column->ReadOnly = true;
                column->Unique = true;
    // Add the Column to the DataColumnCollection.
   table->Columns->Add(column);
    // Create second column.
    column = gcnew DataColumn();
    column->DataType = System::Type::GetType("System.String");
    column->ColumnName = "CustomerID";
    column->AutoIncrement = false;
    column->Caption = "CustomerID";
    column->ReadOnly = false;
    column->Unique = false;
    // Add the column to the table.
    table->Columns->Add(column);

//
    DataColumn[] keys =gcnew DataColumn[1];  //aici imi da eroare; cere ; dupa DataColumn

Code: Select all

  //am incercat si cu array<DataColumn^>^ keys
   keys[0]=table->Columns["OrderID"];
                 table->PrimaryKey=keys;
Multumesc pentru orice sfat ce poate rezolva problema!!



User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by Silviu Ardelean » 27 Jul 2008, 12:44

Din codul tau, inteleg ca, tu vrei sa creezi o tabela din baza de date direct din cod si nu iti iese setarea cheii primare. Desi am scris mai multe aplicatii ce lucreaza cu baze de date, recunosc, aceasta cale cale de creeare a tabelei nu am facut-o niciodata.
Prima mea intrebare, este: chiar e nevoie de creearea acestei tabele direct din cadrul aplicatiei? Nu poate fi creeata inainte (dintr-o aplicatie specializata - ex. SQL Server Management, Access, phpMyAdmin, etc) si aceasta sa existe deja in DB in momentul utilizarii?
Daca ar fi sa creez dinamic o tabela in BD, atunci o alta modalitate ar fi scrierea si executarea unei interogari SQL ca mai jos:

Code: Select all

CREATE TABLE [dbo].[Clients](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[description] [nvarchar](255) NOT NULL,
	[i7] [int] NOT NULL,
	[i8] [int] NOT NULL
) ON [PRIMARY]

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by neagu_laurentiu » 27 Jul 2008, 14:11

Dar tu lucrezi cu Visual Studio... deci poti "visual" sa-ti creezi dataset-ul, datatable etc. si vezi apoi codul generat...

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by neagu_laurentiu » 27 Jul 2008, 15:02

Asta-ti merge:

Code: Select all

DataTable^ table = gcnew DataTable();
DataColumn^ column;

column = gcnew DataColumn();
column->DataType = System::Type::GetType("System.Int32");
column->ColumnName = L"ID";
table->Columns->Add(column);

table->PrimaryKey = gcnew cli::array<System::Data::DataColumn^>(1){column};

this->dataGridView1->DataSource=table;

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by Ovidiu Cucu » 27 Jul 2008, 17:47

[ Moved thread ]

alfred1111
Junior
Junior
Posts: 8
Joined: 27 Jul 2008, 10:52
Judet: Brăila

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by alfred1111 » 28 Jul 2008, 19:36

neagu_laurentiu wrote:Dar tu lucrezi cu Visual Studio... deci poti "visual" sa-ti creezi dataset-ul, datatable etc. si vezi apoi codul generat...
Alfred1111:
As face bucuros acest lucru, dar, lucrez cu Visual C++ 2008 Express 9.0.21.22.8 RTM, am instalat toate UP-date-urile, si cand trebuie sa aleg o sursa de date la Data Source Configuration Wizard, pe fereastra de alegere a bazei de date, nu apare si DATABASE ci doar Object, ca sa continui cu metoda visuala. Am citit intr-o carte ca e vorba de un bug, reparat ulterior, dar, nu am gasit o versiune free mai buna.. Daca stiti cum as putea ocoli acesta "bariera", as fi foarte fericit, pt ca mi-as putea face modele sa le studiez. Foarte putina documentatie cu exemple am gasit pt free vc++ 2008 express
Multumesc pt raspuns.

alfred1111
Junior
Junior
Posts: 8
Joined: 27 Jul 2008, 10:52
Judet: Brăila

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by alfred1111 » 28 Jul 2008, 19:42

neagu_laurentiu wrote:Asta-ti merge:

Code: Select all

DataTable^ table = gcnew DataTable();
DataColumn^ column;

column = gcnew DataColumn();
column->DataType = System::Type::GetType("System.Int32");
column->ColumnName = L"ID";
table->Columns->Add(column);

table->PrimaryKey = gcnew cli::array<System::Data::DataColumn^>(1){column};

this->dataGridView1->DataSource=table;
Multumesc, a mers! :yahoo:

neagu_laurentiu
Membru++
Membru++
Posts: 919
Joined: 23 Jul 2007, 11:32

Re: visual c++ 2008 eroare la DataColumn pt PrimaryKey

Post by neagu_laurentiu » 28 Jul 2008, 21:09

alfred1111 wrote:Foarte putina documentatie cu exemple am gasit pt free vc++ 2008 express
E adevarat, C# e preferatul acum al MS-ului iar in trecut a fost VB-ul...
alfred1111 wrote:As face bucuros acest lucru, dar, lucrez cu Visual C++ 2008 Express... nu apare... ca sa continui cu metoda visuala
Nu am la indemana un VC++ Express dar sigur se poate... Sunt doua modalitati de a lucra cu DataSet-uri .NET: unul e strong-type (fisierele .xsd) care e posibil sa nu fie inclus in Express DAR daca pui pe forma un DataSet si te duci la Properties ai acces acolo prin wizard-urile asociate la definitia tabelelor, coloanelor etc. tot "visual", apoi poti consulta si codul generat automat.

Post Reply