Database forbindelse via C++

Tags:    c++ php

Jeg skal have lavet en simpel konsolapplikation som kan hente og skrive data til en Access fil (.mdb).
Er der nogen som har et eksempel på hvordan man opretter en sådan forbindelse?


Lars Sarbæk Kristiansen
IKT-ingeniør studerende
Ingeniørhøjskolen i Århus



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato


HEJ

Eftersom du er fra IHA går jeg ud fra det er Visual Studio du bruger?? Men hvis det nu er borland er der indbyggede komponenter, ret simple. Det er ADO komponenterne...
Kan du ikke oplyse lidt mere med udviklings miljø??

Der udvikles i MS visual studio .NET og der ønskes ikke at anvende ATL bibliotekerne.
Det skal køre som en WIN32 konsol applikation og ikke en managed applikation.


Lars Sarbæk Kristiansen
IKT-ingeniør studerende
Ingeniørhøjskolen i Århus


Hej Lars!

Jeg kan kun forklare dig hvordan det kan gøres i MS Visual Studio.NET ved hjælp af Managed Code hvis du vil have det...? Håber også at du ved, at en WIN32 applikation også kan udvikles med Managed Code...?

Her er et kode-eksempel i Managed C++:
#include "stdafx.h"

#using <mscorlib.dll>
#using <System.dll> // For Console I/O
#using <System.Data.dll> // For ADO.NET
#include <tchar.h>

using namespace System;
using namespace System::Data; // Generic ADO.NET definitions
using namespace System::Data::OleDb; // Specific definitions for SQL Server data provider

int _tmain(void)
{
OleDbConnection* cnMinDB = new OleDbConnection();
cnMinDB->ConnectionString = S"Din Database connection string skal skrives her... hvordan så ellers ser ud...";

try
{
cnPubs->Open();
Console::WriteLine(S"Connected to database successfully!");
Console::WriteLine();

OleDbCommand* cmMinComm = new OleDbCommand();
cmMinComm->CommandText = S"SELECT etellerandet FROM etellerandet"; // Her sættes SQL kommandoen!
cmMinComm->CommandType = CommandType::Text;
cmMinComm->Connection = cnMinDB;

Object* numberOfTitles = cmMinComm->ExecuteScalar();
Console::Write(S"Number of titles: ");
Console::WriteLine(numberOfTitles);
Console::WriteLine();

int rowsAffected = cmMinComm->ExecuteNonQuery();
Console::Write(S"Number of affected entries: ");
Console::WriteLine(rowsAffected);

OleDbDataReader* reader = cmMinComm->ExecuteReader();

Console::WriteLine(S"\\n-----------------------------------");
while (reader->Read())
{
Console::Write(reader->GetString(0));
Console::Write(S", ");

if (reader->IsDBNull(1))
{
Console::WriteLine(S"No price yet");
}
else
{
Console::WriteLine(reader->GetDecimal(1));
}
}
}
catch(OleDbException* Xcp)
{
Console::Write(S"Error occurred: ");
Console::WriteLine(Xcp->Message);
}

// Tjecker om min DB er åben... Hvis den er det lukker vi den for at frigive memory
if (cnMinDB->State != ConnectionState::Closed)
{
cnMinDB->Clone();
}
Console::WriteLine(S"The database connection is now closed");

return 0;
}

Håber du kan bruge det... Hvis det skal være med Unmanaged C++ kan jeg måske ikke hjælpe dig...

- Jonas
"Vive su vida a través de sus propios ojos!"[Redigeret d. 10/10-02 13:39:29 af Jonas Midstrup]



User
Bruger #884 @ 19.09.02 22:03
Jeg skal have lavet en simpel konsolapplikation som kan hente og skrive data til en Access fil (.mdb).
Er der nogen som har et eksempel på hvordan man opretter en sådan forbindelse?


Lars Sarbæk Kristiansen
IKT-ingeniør studerende
Ingeniørhøjskolen i Århus


HEJ

Eftersom du er fra IHA går jeg ud fra det er Visual Studio du bruger?? Men hvis det nu er borland er der indbyggede komponenter, ret simple. Det er ADO komponenterne...
Kan du ikke oplyse lidt mere med udviklings miljø??





HEJ

Eftersom du er fra IHA går jeg ud fra det er Visual Studio du bruger?? Men hvis det nu er borland er der indbyggede komponenter, ret simple. Det er ADO komponenterne...
Kan du ikke oplyse lidt mere med udviklings miljø??


Der udvikles i MS visual studio .NET og der ønskes ikke at anvende ATL bibliotekerne.
Det skal køre som en WIN32 konsol applikation og ikke en managed applikation.


Lars Sarbæk Kristiansen
IKT-ingeniør studerende
Ingeniørhøjskolen i Århus





HEJ

Eftersom du er fra IHA går jeg ud fra det er Visual Studio du bruger?? Men hvis det nu er borland er der indbyggede komponenter, ret simple. Det er ADO komponenterne...
Kan du ikke oplyse lidt mere med udviklings miljø??

Der udvikles i MS visual studio .NET og der ønskes ikke at anvende ATL bibliotekerne.
Det skal køre som en WIN32 konsol applikation og ikke en managed applikation.


Lars Sarbæk Kristiansen
IKT-ingeniør studerende
Ingeniørhøjskolen i Århus

Hej Lars!

Jeg kan kun forklare dig hvordan det kan gøres i MS Visual Studio.NET ved hjælp af Managed Code hvis du vil have det...? Håber også at du ved, at en WIN32 applikation også kan udvikles med Managed Code...?

Her er et kode-eksempel i Managed C++:
#include "stdafx.h"

#using <mscorlib.dll>
#using <System.dll> // For Console I/O
#using <System.Data.dll> // For ADO.NET
#include <tchar.h>

using namespace System;
using namespace System::Data; // Generic ADO.NET definitions
using namespace System::Data::OleDb; // Specific definitions for SQL Server data provider

int _tmain(void)
{
OleDbConnection* cnMinDB = new OleDbConnection();
cnMinDB->ConnectionString = S"data source=(local); integrated security=true; initial catalog=Pubs";

try
{
cnPubs->Open();
Console::WriteLine(S"Connected to database successfully!");
Console::WriteLine();

OleDbCommand* cmMinComm = new OleDbCommand();
cmMinComm->CommandText = S"SELECT etellerandet FROM etellerandet"; // Her sættes SQL kommandoen!
cmMinComm->CommandType = CommandType::Text;
cmMinComm->Connection = cnMinDB;

Object* numberOfTitles = cmMinComm->ExecuteScalar();
Console::Write(S"Number of titles: ");
Console::WriteLine(numberOfTitles);
Console::WriteLine();

int rowsAffected = cmMinComm->ExecuteNonQuery();
Console::Write(S"Number of affected entries: ");
Console::WriteLine(rowsAffected);

OleDbDataReader* reader = cmMinComm->ExecuteReader();

Console::WriteLine(S"\\n-----------------------------------");
while (reader->Read())
{
Console::Write(reader->GetString(0));
Console::Write(S", ");

if (reader->IsDBNull(1))
{
Console::WriteLine(S"No price yet");
}
else
{
Console::WriteLine(reader->GetDecimal(1));
}
}
}
catch(OleDbException* Xcp)
{
Console::Write(S"Error occurred: ");
Console::WriteLine(Xcp->Message);
}

// Tjecker om min DB er åben... Hvis den er det lukker vi den for at frigive memory
if (cnMinDB->State != ConnectionState::Closed)
{
cnMinDB->Clone();
}
Console::WriteLine(S"The database connection is now closed");

return 0;
}

Håber du kan bruge det... Hvis det skal være med Unmanaged C++ kan jeg måske ikke hjælpe dig...

- Jonas
"Vive su vida a través de sus propios ojos!"



Hej igen!

Det var da sk*de irriterende! Nå, men, der hvor der står :D skal der selvfølgelig være et : (kolon) efterfulgt af et stort D.

Det kan den ikke finde ud af at skrive rigtigt herinde...!

- Jonas
"Vive su vida a través de sus propios ojos!"



t