[c++ .net] database insert zonder odbc

Pagina: 1
Acties:

  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 18:03
ik wil in een ms access database records wegschrijven maar dit lukt mij niet.
het ophalen en verwerken van de gegevens lukt me wel, maar schrijven naar de database levert steeds een runtime error op.
ik heb got en google al geprobeerd, maar helaas zonder resultaat.
dit is mn code tot dusver, deze compiled wel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    _bstr_t         strConectIt;
    _ConnectionPtr  pConnectWrite;
    _RecordsetPtr pConnectRead;
    _bstr_t connectionString;

void writeToDB()
{
    strConectIt = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False";

    CoInitialize(NULL);
    _ConnectionPtr p("ADODB.Connection"); 
    pConnectWrite = p ;

    pConnectWrite->Open(strConectIt, "", "", adConnectUnspecified);
    _RecordsetPtr pRst("ADODB.Recordset");
    pConnectRead = pRst;
    pConnectRead->Open("Insert into testdb values ('test','test','test','test','test','test','test','test')",
        strConectIt, adOpenStatic, adLockReadOnly, adCmdText);
    pConnectRead->Close();
    pConnectWrite->Close();
}

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Welke fout krijg je dan?
Ben je zeker dat je insert statement werkt? etc...

https://fgheysels.github.io/


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 18:03
de fout zit hier in:
code:
1
2
pConnectRead->Open("Insert into testdb values ('test','test','test','test','test','test','test','test')",
        strConectIt, adOpenStatic, adLockReadOnly, adCmdText);

maar ik snap niet waarom dit niet mag?
edit:

de query is overigens goed

[ Voor 28% gewijzigd door sturkel op 15-03-2004 12:16 ]

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je gebruikt een recordset om een INSERT statement uit te voeren?
Tja, dat gaat niet werken natuurlijk. Een recordset is een set records die je terugkrijgt van de DB.

Waarom maak je trouwens geen gebruik van de ADO.NET classes?

Kijk eens naar de System.Data en System.Data.OleDb namespaces en de classes die daarin gedefinieerd zijn.

[ Voor 19% gewijzigd door whoami op 15-03-2004 12:23 ]

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Heeft die applicatie wel NTFS schrijfrechten?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 18:03
De (write)rechten staan voor mijn account op allow

[ Voor 2% gewijzigd door sturkel op 15-03-2004 12:25 . Reden: wirte->write ]

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 18:03
Ik krijg die ado.net classes niet werkend.
ik heb de standaard code van microsoft gebruikt
http://support.microsoft.com/default.aspx?scid=kb;nl;308428
maar ik krijg deze fout:
code:
1
fatal error C1190: managed targeted code requires '#using <mscorlib.dll>' and '/clr' option

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je compileert je C++ code dus niet als 'C++.NET' code oid?

https://fgheysels.github.io/


  • Arx
  • Registratie: November 2001
  • Laatst online: 26-05 17:32

Arx

Two Thoughts Ahead!

whoami schreef op 15 maart 2004 @ 12:21:
Je gebruikt een recordset om een INSERT statement uit te voeren?
Tja, dat gaat niet werken natuurlijk. Een recordset is een set records die je terugkrijgt van de DB.

Waarom maak je trouwens geen gebruik van de ADO.NET classes?

Kijk eens naar de System.Data en System.Data.OleDb namespaces en de classes die daarin gedefinieerd zijn.
Volgens mij kan het wel maar het is inderdaad mooier om een nonexecutequery van te maken ;)

Ik lees dat je van c++.NET gebruik maakt, die heeft exception handling.

Als je nou eens een try catch block omheen gooit en dan eens naar de error message gaat kijken?

Hier een msdn link naar de exception handling:

http://msdn.microsoft.com....and_throw_Statements.asp

Heb je je db model goed bestudeerd? is alles daadwerkelijk een stringetje? ;)

Copywight 2000,2001,2002,2003,2004,2005,2006,2007 Arx. All wights wesewved. | PS Network tag -> Arx_nl


  • sturkel
  • Registratie: Oktober 2001
  • Laatst online: 18:03
Ik had geen .net project. dit heb ik nu aangemaakt, maar nu krijg ik de volgende foutmelding, waar ik niets mee kan:
code:
1
2
3
4
5
lijn 48: OleDbConnection myConnection = new OleDbConnection();

d:\corba.net\DB.cpp(48): error C3149: 'System::Data::OleDb::OleDbConnection' : illegal use of managed type 'System::Data::OleDb::OleDbConnection'; did you forget a '*'?
d:\corba.net\DB.cpp(48): error C2262: 'myConnection' : cannot be destroyed
d:\corba.net\DB.cpp(48): error C2664: 'System::Data::OleDb::OleDbConnection::OleDbConnection(System::String __gc *)' : cannot convert parameter 1 from 'System::Data::OleDb::OleDbConnection __gc *' to 'System::String __gc *'

[AMD 64 X2 3800] [Asus a8n-e] [2048mb Kingston] [nvidia 7300GS] [2*Seagate160GB s-ata] [WD 120GB 8MB] [Plextor px-708a] [nec 4550]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je moet die OleDb namespace natuurlijk wel 'usen'.

In C# doe je dat zo:
code:
1
using System.Data.OleDb;


Hoe je het in VC++.NET doet, zal je wel in de help vinden.

https://fgheysels.github.io/

Pagina: 1