SQL-Datenbak abfrage

Smile85

Grünschnabel
Hallo!
Ich muss vorweg sagen dass ich Anfänger bin
Nun zu meinem Problem:
Ich möchte gerne in einer selbst erstellten Datenbank die Anzahl der Datensätze in einer
Textbox anzeigen lassen, ich weis zwar das es irgendwie mit “SELECT COUNT(*) FROM bndlaender“ gehen muss, glaub ich halt.
Aber allerdings weis ich nicht wie ich das an die Datenbank schicken muss und wie man das Ergebnis dann in einer Textbox ausgeben lassen kann.

ICH BITTE UM EURE HILFE!
Danke schon mal in voraus um eure Bemühungen

Mfg Martin
 

Profundi

Mitglied
Hallo,

als erstes brauchst du eine Verbindung zur Datenbank welche du mit dem Befehl:
"mysql_connect" aufbauen kannst!

Erstelle zunächst eine Datei mit Namen "connect.php" in der du folgender Inhalt hinzufügst:

PHP:
<?php 
$dburl = "localhost"; //füge hier die Datenbank URL ein, in der Regel: localhost!
$dbloginname = "root"; //füge hier deinen Login Namen ein, in der Regel: root!
$dbpassword = ""; //füge hier dein Login Passwort ein!
$dbname = "laender"; //füge hier deinen Datenbank Name ein!
$connecterror = "Keine Verbindung zur Datenbank"; //füge hier deine Nachricht ein wenn die Verbindung scheitern sollte!

//Nicht editieren
mysql_connect ($dburl, $dbloginname, $dbpassword);  
if (!mysql_select_db ($dbname))  
{  
  die ($connecterror);  
} ?>

als nächstes gehst du in dein phpMyAdmin und erstellst eine Neue Datenbank die du oben in der "connect.php" Datei eingestellt hast!
In dieser Datenbank gibst du nun folgendes in deine SQL Konsole ein:

PHP:
CREATE DATABASE `laender`;
CREATE TABLE `laender`.`bndlaender` (
`id` INT( 255 ) NOT NULL AUTO_INCREMENT ,
`bndlaender` TEXT NOT NULL ,
PRIMARY KEY ( `id` ) 
) ENGINE = MYISAM

CREATE DATABASE `laender`; lässt eine neue Datenbank entstehen
CREATE TABLE `laender`.`bndlaender` lässt eine neue Tabelle namens bndlaender in der Datenbank laender entstehen
die Werte die darauf folgen sind Spalten die erstellt werden!

Somit ist also die Spalte:
"id" welcher ein INTEGER Wert ist (INT meist für Ziffern vorgesehn) auf den Wert AUTO_INCREMENT eingestellt! Heisst: Die Zahl steigt Automatisch: 1, 2, 3... etc... Anhand dieses Automatischen Vorgangs wird nachher festgestellt wieviele Einträge du in deiner Tabelle hast!
Und die Spalte
"bndlaender" welcher ein TEXT Typ ist (Kann bis zu 550 Zeichen enthalten)
hat den TEXT Wert gespeichert!

Gut somit das nun geklärt ist fahren wir fort und zwar erstellen wir eine neue php datei Namen: "land_eintragen.php" die wir mit folgendem Inhalt füllen:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Land einfügen</title>
</head>
<body>
 <form action="wert_eintragen.php" method="post">
    <div align="center">
<strong>Land hinzuf&uuml;gen:</strong><br>
      <table width="414" border="1">
        <tr>
          <td width="98" nowrap>Landes Name:
          <td width="300"><input name="land" type="text" id="land" size="50" maxlength="50"></td>
        </tr>
      </table>
    </div>
    <label>
    <div align="center">
      <input type="submit" name="button" id="button" value="Hinzuf&uuml;gen" />
      <label>
      <input type="reset" name="button2" id="button2" value="Zur&uuml;cksetzen">
      </label>
    </div>
    </label>
  </form>
</body>
</html>
Diese Datei wird das Formular welches wir brauchen um einen Wert in die Datenbank zu übertragen!

Als nächstes müssen wir das Formular an eine Datei weiterreichen! Erstellen wir also eine neue Datei Namens: "wert_eintragen.php" die wie folgt aussieht:
PHP:
<?php 
//Werte vom Formular in die Variable $landname einlesen
$landname = $_POST[land];
echo $landname;
//Datenbank verbindung öffnen
include('connect.php');

//Datenbank Anweisung in die Variable $sql einlesen
  $sql = "INSERT INTO ". 
    "bndlaender (bndlaender) ". 
  "VALUES ('".$landname."')";
			  
			   //Werte von $sql in die Datenbank eintragen
			   mysql_query ($sql);

//Anschliessend die Seite laden:
include("land_anzeigen.php");
?>
Als letztes fehlt nur noch die "land_anzeigen.php":
PHP:
<html>
<head>
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
.Überschrift {
	color: #FF0000;
	font-family: Arial, Helvetica, sans-serif;
}
.Feldbezeichner {
	color: #999999;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<div align="center">
<table>
<?php

$id = $_GET["id"];
include('connect.php');
$res = mysql_query("SELECT * FROM bndlaender ORDER BY id DESC"); // Hier werden die Länder nach ID sortiert! DESC bedeutet das die Werte aufsteigend sortiert sind!


while($row = mysql_fetch_array($res))
{
?>
    <td width="98" nowrap="nowrap" bordercolor="#CCCCCC" bgcolor="#CCCCCC"><div align="center"><span class="Stil14"><font face="Tahoma" size="2"><?php echo $row["id"]; ?></font></span></div></td>
    <td width="300" bordercolor="#CCCCCC" bgcolor="#333333"><div align="center" class="Stil14"><font face="Tahoma" size="2"><?php echo $row["bndlaender"]; ?></font></div></td>
  </tr>
  <tr>
    <td nowrap="nowrap" bordercolor="#CCCCCC" bgcolor="#FFFFFF" class="Feldbezeichner">&nbsp;</td>
    <td bordercolor="#CCCCCC" bgcolor="#FFFFFF"><div align="center" class="Stil14"></div></td>
  </tr>
  
  <?php } ?>
</table>
</div>
</body>
</html>
So nur noch Uploaden und dann sollte es funktionieren!
 
Zuletzt bearbeitet:

Profundi

Mitglied
Ou Sh** hab erst jetzt gesehn dass es sich nicht um PHP handelt ;)
Ne Stunde Arbeit umsonst... Naja ^^ Ich hoffe trotzdem ich konnte dir helfen!

LG
 

Smile85

Grünschnabel
Hallo Profundi!
Danke für deine Hilfe erstmal!
Hab jetzt nur folgendes Problem da es sich ja nicht um PHP handelt und ich leider ein voll Blutiger Anfänger bin, hab ich jetzt keine Ahnung wie ich deinen Code ändern müsste das ich ihn bei meinen Problem einsetzten kann!?
Du hast dich wirklich sehr bemüht mir zu helfen, kannst du mir vielleicht noch weiter helfen?

Hab schon folgendes Probiert:

SqlConnection ^verbindung = gcnew SqlConnection(verbindungsstr);
verbindung->Open( );

SqlCommand ^befehl = gcnew SqlCommand( );
befehl->Connection = verbindung;
befehl->CommandText = “SELECT COUNT(*) FROM bndlaender“;

leser = befehl->ExecuteReader( );

Nur weiter komme ich nicht!
Vorausgesetzt dass das überhaupt stimmt .

Mfg Martin
 

pschilling

Erfahrenes Mitglied
Hallo Smile,

ich würde dir empfehlen, die Klassen CDatabase und CRecordset zu verwenden.

Dazu müsstest du über die Systemsteuerung eine ODBC-Verbindung zu deiner Datenbank einrichten.

Dann kannst du die Datenbank wie folgt connecten:

Code:
    CString dbConnectString;
    dbConnectString.Format("DSN=%s;UID=%s;PWD=%s", myDSN, myUsername, myPassword);
    CDatabase db;
    if( !db.OpenEx(dbConnectString,0 ) ) {
        // Fehler beim Verbinden aufgetreten
        return FALSE;
    }

Normale Statements wie UPDATE, INSERT und so (alles was keine Ergebnisliste zurückgibt) kannst du direkt über das CDatabase-Objekt absetzen.

Code:
  CString stmt = "update d set a = 'bla', b = 'blubb' where c = 'würg';
  db.ExecuteSQL(stmt);

So kannst du Select-Statements absetzen und die Resultate auslesen

Code:
    CString stmt = "select a, b, c from d";
    CRecordset rs(&db);
    if( rs.Open(CRecordset::snapshot, stmt, CRecordset::none ) && !rs.IsEOF()) {
        rs.MoveFirst();
        CString a,b,c;
        while( !rs.IsEOF() ) {
            rs.GetFieldValue((short)0, a);
            rs.GetFieldValue((short)1, b);
            rs.GetFieldValue((short)2, c);

            rs.MoveNext();
        }
    }

Und am Ende natürlich deine Connection wieder schließen.

Code:
    dc.Close();


Um mit diesen Methoden arbeiten zu können musst du folgenden include hinzufügen :

Code:
include "afxdb.h"


Vielleicht bringts dich ja weiter..


Viel Erfolg,

Pit
 

Smile85

Grünschnabel
Hallo pschilling!
Danke auch für deine Hilfe!!
Habe aber jezt mein Problem anderst gelöst,

int count=bindingSource1->Count;
textBox1->Text=Convert::ToString(count);

Trotzdem vielen Dank für eure Hilfe
Mfg Martin