PinkoPalino
Grünschnabel
OleDB Datensatz rückwärts auslesen
Hallo!
Ich habe es jetzt endlich geschafft, auf eine Access-Datenbank zuzugreifen.
Zur demonstartion, wie ich auf die Datenbank zugreife, habe ich folgende Datenbank:
Tabellenname: main
Datenfelder: Name und Age, wobei Name als Primärschlüssel gilt.
Der Code folgt unten!
Bei meiner eigentlichen App, ist der Primärschlüssel ein Datum.
Mein Problem ist jetzt folgendes:
Ich habe ein Datum xy und möchte das nächste kleinere Datum ermitteln.
Nur weiß ich nicht, wie ich das Anstellen kann?!
Hier meine .h Datei für den Datenbankzugriff:
und hier die .cpp Datei:
Kann mir da jemand helfen?
Danke
Hallo!
Ich habe es jetzt endlich geschafft, auf eine Access-Datenbank zuzugreifen.
Zur demonstartion, wie ich auf die Datenbank zugreife, habe ich folgende Datenbank:
Tabellenname: main
Datenfelder: Name und Age, wobei Name als Primärschlüssel gilt.
Der Code folgt unten!
Bei meiner eigentlichen App, ist der Primärschlüssel ein Datum.
Mein Problem ist jetzt folgendes:
Ich habe ein Datum xy und möchte das nächste kleinere Datum ermitteln.
Nur weiß ich nicht, wie ich das Anstellen kann?!
Hier meine .h Datei für den Datenbankzugriff:
Code:
#pragma once
void InsertRecord(System::String^ nam, int age);
System::String^ ShowAge(System::String^ nam);
void updateRecord(System::String^ nam, int age);
void deleteRecord(System::String^ nam);
und hier die .cpp Datei:
Code:
#include "StdAfx.h"
#include "Datenzugriff.h"
using namespace System;
using namespace System::Data::OleDb;
void InsertRecord(String^ nam, int age)
{
OleDbConnection^ conn = gcnew OleDbConnection(
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");
conn->Open();
OleDbCommand^ insertCommand = gcnew OleDbCommand();
insertCommand->CommandText = L"INSERT INTO main(Name,Age) VALUES(?,?)";
insertCommand->Connection = conn;
insertCommand->Parameters->AddWithValue("Name",nam);
insertCommand->Parameters->AddWithValue("Age",age);
insertCommand->ExecuteNonQuery();
conn->Close();
}
String^ ShowAge(String^ nam)
{
OleDbConnection^ conn = gcnew OleDbConnection(
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");
conn->Open();
OleDbCommand^ selectCommand = gcnew OleDbCommand();
selectCommand->CommandText = L"SELECT Age FROM main WHERE Name = ?";
selectCommand->Connection = conn;
selectCommand->Parameters->AddWithValue("Name",nam);
OleDbDataReader^ rdr = selectCommand->ExecuteReader();
String^ res;
if(rdr->Read())
{
res = nam + " is " + rdr["Age"] + " years old";
}
else
{
res = "No matches found for " +nam;
}
conn->Close();
return res;
}
void updateRecord(String^ nam, int age)
{
OleDbConnection^ conn = gcnew OleDbConnection(
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");
conn->Open();
OleDbCommand^ updateCommand = gcnew OleDbCommand();
updateCommand->CommandText = L"UPDATE main SET Age=? WHERE Name='?'";
updateCommand->Connection = conn;
updateCommand->Parameters->AddWithValue("Age", age);
updateCommand->Parameters->AddWithValue("Name",nam);
int x = updateCommand->ExecuteNonQuery();
conn->Close();
}
void deleteRecord(String^ nam)
{
OleDbConnection^ conn = gcnew OleDbConnection(
"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\test.mdb");
conn->Open();
OleDbCommand^ deleteCommand = gcnew OleDbCommand();
deleteCommand->CommandText = L"DELETE * FROM `main` WHERE Name = ?";
deleteCommand->Connection = conn;
deleteCommand->Parameters->AddWithValue("Name",nam);
deleteCommand->ExecuteNonQuery();
conn->Close();
}
Kann mir da jemand helfen?
Danke
Zuletzt bearbeitet: