Mysql daten schreiben und auslesen

aL1ien

Mitglied
Guten Tag,

Ich befasse mich atm mit Mysql Verbindungen. Ich konnte schon eine Simple Verbindung aufbauen, allerdings möchte ich aus Datenbanken auslesen und schreiben. Ich finde keine passenden Tutorials dazu, die mich wirklich weiter bringen. Es sind keine Erklärungen etc dabei.

Hier mein Code

Code:
#include "stdafx.h"
#include <iostream>
#include <winsock.h>
#include <my_global.h>
#include <mysql.h>

#pragma comment (lib, "libmysql.lib")

using namespace std;

int main ()  { 
    MYSQL_RES *mTabelle; 
    MYSQL_ROW mRecord; 
    MYSQL *mConnection, mDB; 
    int mError; 
    mysql_init(&mDB); 
    mConnection = 
mysql_real_connect(&mDB,"localhost","root","pw","test",0,0,0); 
    if (mConnection == NULL)  
	{ 
        cout << mysql_error(&mDB) << endl;
		system ("PAUSE");
		return 1; 
    } 
	
	else 
	
	{ 
		cout << "Verbindung wurde erfolgreich hergestellt" << endl; 
    } 
    mysql_close(mConnection);
	system ("PAUSE");
    return 0; 
}

Danke schonmals!
 
Zuletzt bearbeitet:
habe ein auch ein Programm geschrieben, das daten aus der datenbank ausliest. aber in C und nicht C++ wenn du es haben willst
gruss
 
Code:
/*****************************************************************************/
/*     Einbinden der Bibliotheken                                            */
/*****************************************************************************/
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <mysql/mysql.h>



/*****************************************************************************/
/*     Define Statments                                                      */
/*****************************************************************************/
#define ERROR		   (-1)
#define NO_ERROR	     0

#define MAX_SIP_URI_SIZE   50
#define MAX_SIP_URIS_SIZE 101


#define MYSQL_HOST		"localhost"
#define MYSQL_USER		"openser"
#define MYSQL_PW		"openserrw"
#define MYSQL_DB_NAME		"openser"

#define FIFO			"/var/tmp/fifo1"
#define BUF_SMALL	   	16
#define BUF_MID		   	128
#define BUF_BIG       		256

int 	nLocErr;
int	nLoop;
int	nUriInBuf;
int	nFifoFd;
	
char    szQueryBuf[BUF_MID];
char	szQueryResult[BUF_SMALL][BUF_BIG];
char	szDecBuf[BUF_MID];
char*	pCharQuery;	
MYSQL*	   mySql;
MYSQL_RES* myResult;
MYSQL_ROW  myRow;	

/*****************************************************************************/
/*                      Main Hauptmodul                                      */
/*****************************************************************************/


/*------------------------------------------------------------------------*/
int main(int argc, char *argv[]) {

		/* find a matching entry in MySQL-DB and get SDP-data in buffers */		
		mySql = mysql_init(NULL);
 		
		if(NULL == mysql_real_connect(
        		mySql,     		/* Zeiger auf MYSQL-Handler */
		MYSQL_HOST,	 	/* Host-Name */
		MYSQL_USER, 		/* User-Name */ 		    	MYSQL_PW,	/* Passwort fuer user_name */
		MYSQL_DB_NAME,  	/* Name der Datenbank */
	                    0,			/* Port (default=0) 
                                         NULL,		/* Socket (default=NULL) */
		0))			/* keine Flags */ 
        
        	{
      		fprintf (stderr, "mysql_real_connect()-error:"
            		 "%u (%s)\n",mysql_errno (mySql), mysql_error (mySql));
		}
		else
		{


			pCharQuery = "SELECT  FROM WHERE";
			mysql_query(mySql,pCharQuery);
			
			myResult = mysql_store_result(mySql);
		
				/* copy result to buffer */
				nLoop=0;
				 while ((myRow = mysql_fetch_row (myResult)))
				{	
					sprintf(szQueryResult[nLoop], "%s", myRow[0]);
					sprintf(szQueryBuf, "%s", szQueryResult[nLoop]);
				}	
					 if ((nFifoFd = open (FIFO, O_RDWR)) == -1) 
				   {
					      perror ("open()");
					      nLocErr = ERROR;
				   }
		
			
			sprintf(szDecBuf, "%s", szQueryBuf);
			write (nFifoFd, szDecBuf, strlen(szDecBuf));
	
	}		
	mysql_close(mySql);
	return(nLocErr);
}

du musst halt für dich anpassen..hier ist noch was
http://www.c-plusplus.de/forum/viewtopic-var-t-is-173240.html
 
C++:
// init mysql
m_mysql = ::mysql_init(NULL);
if (m_mysql == NULL) throw mysql_error("could not init mysql");

// connect to database
if (::mysql_real_connect(m_mysql, "localhost", "root", "envelopes99", "test", 0, NULL, 0) == NULL || ::mysql_select_db(m_mysql, database.c_str()) < 0)
    throw mysql_error("could not connect to database");

// send querry
if (::mysql_query(m_mysql, "SELECT * FROM `table`;")) 
    throw mysql_error("could not query data");

// get resulting data
::MYSQL_RES* ptr_result(::mysql_store_result(m_mysql));
const std::size_t result_count(static_cast<std::size_t>(::mysql_num_rows(ptr_result)));

// show data
for (std::size_t i(0); i < result_count; ++i)
{
    const ::MYSQL_ROW row(::mysql_fetch_row(ptr_result));
    std::cout << row[0] << " | " << row[1] << std::endl;
}

// free data
::mysql_free_result(ptr_result);

// close connection
::mysql_close(m_mysql);
 
Code:
/*****************************************************************************/
/*     Einbinden der Bibliotheken                                            */
/*****************************************************************************/
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <mysql/mysql.h>



/*****************************************************************************/
/*     Define Statments                                                      */
/*****************************************************************************/
#define ERROR		   (-1)
#define NO_ERROR	     0

#define MAX_SIP_URI_SIZE   50
#define MAX_SIP_URIS_SIZE 101


#define MYSQL_HOST		"localhost"
#define MYSQL_USER		"openser"
#define MYSQL_PW		"openserrw"
#define MYSQL_DB_NAME		"openser"

#define FIFO			"/var/tmp/fifo1"
#define BUF_SMALL	   	16
#define BUF_MID		   	128
#define BUF_BIG       		256

int 	nLocErr;
int	nLoop;
int	nUriInBuf;
int	nFifoFd;
	
char    szQueryBuf[BUF_MID];
char	szQueryResult[BUF_SMALL][BUF_BIG];
char	szDecBuf[BUF_MID];
char*	pCharQuery;	
MYSQL*	   mySql;
MYSQL_RES* myResult;
MYSQL_ROW  myRow;	

/*****************************************************************************/
/*                      Main Hauptmodul                                      */
/*****************************************************************************/


/*------------------------------------------------------------------------*/
int main(int argc, char *argv[]) {

		/* find a matching entry in MySQL-DB and get SDP-data in buffers */		
		mySql = mysql_init(NULL);
 		
		if(NULL == mysql_real_connect(
        		mySql,     		/* Zeiger auf MYSQL-Handler */
		MYSQL_HOST,	 	/* Host-Name */
		MYSQL_USER, 		/* User-Name */ 		    	MYSQL_PW,	/* Passwort fuer user_name */
		MYSQL_DB_NAME,  	/* Name der Datenbank */
	                    0,			/* Port (default=0) 
                                         NULL,		/* Socket (default=NULL) */
		0))			/* keine Flags */ 
        
        	{
      		fprintf (stderr, "mysql_real_connect()-error:"
            		 "%u (%s)\n",mysql_errno (mySql), mysql_error (mySql));
		}
		else
		{


			pCharQuery = "SELECT  FROM WHERE";
			mysql_query(mySql,pCharQuery);
			
			myResult = mysql_store_result(mySql);
		
				/* copy result to buffer */
				nLoop=0;
				 while ((myRow = mysql_fetch_row (myResult)))
				{	
					sprintf(szQueryResult[nLoop], "%s", myRow[0]);
					sprintf(szQueryBuf, "%s", szQueryResult[nLoop]);
				}	
					 if ((nFifoFd = open (FIFO, O_RDWR)) == -1) 
				   {
					      perror ("open()");
					      nLocErr = ERROR;
				   }
		
			
			sprintf(szDecBuf, "%s", szQueryBuf);
			write (nFifoFd, szDecBuf, strlen(szDecBuf));
	
	}		
	mysql_close(mySql);
	return(nLocErr);
}

du musst halt für dich anpassen..hier ist noch was
http://www.c-plusplus.de/forum/viewtopic-var-t-is-173240.html


Danke vielmals, aber ich werde aus deinem COde nicht schlau. Hat mir jemand eventuell noch ein einfacheres Beispiel zum schreiben und lesen von DB einträgen?

danke!

mfG

edit:// Könnte einer meinen Code so anpassen, dass ich aus einer Datenbank lesen und schreiben kann? Vielleicht hilft es mir dann, die Logik dahinter zu verstehen.
 
Zuletzt bearbeitet:
Den habe ich nicht ignoriert.. ich werde aus ihm nur nicht schlau...

also, mittlerweile kann ich etwas aus einer DB auslesen, aber das einfügen klappt noch nicht ganz...könnte mir jemand noch das einfügen erklären? ;)
 
WAS verstehst du daran nicht?

Einfügen geht einfach auch per mysql_querry ... nur halt muss du das richige Querry dir zusammen bauen (s. std::eek:stringstream). INSERT sollte hier von SQL her die richtige Funktion sein.
 
Hallo,

Ich verstehe nicht, wie ich eine bestimmte Variable (string) reingeschrieben wird. Also, wie ich einen String in die DB reinschreiben kann


mfG
 
Zurück