Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Datenbanken ::  MySQL CREATE DATABASE schmiert ab     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
sentinel.dd
Mitglied

Benutzerprofil
Anmeldungsdatum: 07.05.2008
Beiträge: 21
Beitrag sentinel.dd Mitglied 21:50:05 07.03.2010   Titel:   MySQL CREATE DATABASE schmiert ab            Zitieren

Hallo
ich habe folgenden Code unter VS 2008 C++
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void Cmysql_testDlg::OnBnClickedButton1()
{
CString fehler;
const char *fehler_char;
MYSQL *my;
char *def_host_name;
char *def_user_name;
char *def_passwort;
char *def_db_name;
char *SQL_query;

def_host_name="localhost";
def_user_name="root";
def_passwort="admin";
def_db_name="test";

my = mysql_init(NULL);
if(my == NULL) {
   AfxMessageBox(_T("Fehler init"));
}
/// Wenn ich das rausnehme schmiert das teil ab
if( mysql_real_connect (
        my,            /* Zeiger auf MYSQL-Handler */
        def_host_name, /* Host-Name */
        def_user_name, /* User-Name */
        def_passwort,  /* Passwort für user_name */
        def_db_name,   /* Name der Datenbank */
        0,             /* Port (default=0) */
        NULL,          /* Socket (default=NULL) */
        0              /* keine Flags */  )  == NULL)
{
    fehler_char=mysql_error (my);
    fehler=fehler_char;
    MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
}
/// bis hier

SQL_query="CREATE DATABASE IF NOT EXISTS saia";
if (mysql_real_query(my,SQL_query,strlen(SQL_query)) != NULL)
{
    fehler=mysql_error (my);
    MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
}

}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void Cmysql_testDlg::OnBnClickedButton1()
{
CString fehler;
const char *fehler_char;
MYSQL *my;
char *def_host_name;
char *def_user_name;
char *def_passwort;
char *def_db_name;
char *SQL_query;

def_host_name="localhost";
def_user_name="root";
def_passwort="admin";
def_db_name="test";

my = mysql_init(NULL);
if(my == NULL) {
AfxMessageBox(_T("Fehler init"));
}
/// Wenn ich das rausnehme schmiert das teil ab
if( mysql_real_connect (
my, /* Zeiger auf MYSQL-Handler */
def_host_name, /* Host-Name */
def_user_name, /* User-Name */
def_passwort, /* Passwort für user_name */
def_db_name, /* Name der Datenbank */
0, /* Port (default=0) */
NULL, /* Socket (default=NULL) */
0 /* keine Flags */ ) == NULL)
{
fehler_char=mysql_error (my);
fehler=fehler_char;
MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
}
/// bis hier

SQL_query="CREATE DATABASE IF NOT EXISTS saia";
if (mysql_real_query(my,SQL_query,strlen(SQL_query)) != NULL)
{
fehler=mysql_error (my);
MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
}

}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
void Cmysql_testDlg::OnBnClickedButton1()
{
CString fehler;
const char *fehler_char;
MYSQL *my;
char *def_host_name;
char *def_user_name;
char *def_passwort;
char *def_db_name;
char *SQL_query;

def_host_name="localhost";
def_user_name="root";
def_passwort="admin";
def_db_name="test";

my = mysql_init(NULL);
if(my == NULL) {
   AfxMessageBox(_T("Fehler init"));
}
/// Wenn ich das rausnehme schmiert das teil ab
if( mysql_real_connect (
        my,            /* Zeiger auf MYSQL-Handler */
        def_host_name, /* Host-Name */
        def_user_name, /* User-Name */
        def_passwort,  /* Passwort für user_name */
        def_db_name,   /* Name der Datenbank */
        0,             /* Port (default=0) */
        NULL,          /* Socket (default=NULL) */
        0              /* keine Flags */  )  == NULL)
{
    fehler_char=mysql_error (my);
    fehler=fehler_char;
    MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
}
/// bis hier

SQL_query="CREATE DATABASE IF NOT EXISTS saia";
if (mysql_real_query(my,SQL_query,strlen(SQL_query)) != NULL)
{
    fehler=mysql_error (my);
    MessageBox(fehler,_T("MySQL Fehler"),MB_ICONSTOP);
}

}

das klappt soweit.
Nur wenn ich den kompletten mysql_real_connect teil entferne schmiert die Routiene ab. Wie kann ich eine CREATE DATABASE machen ohne einen connect?
Ich kann ja nicht davon ausgehen, dass die test Database da ist.
Wenn ich dort die Database saia zu connecten versuche schmiert alles mit MYSQL server is gone away ab.

Danke Holger
BasicMan01
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.02.2004
Beiträge: 646
Beitrag BasicMan01 Mitglied 23:39:56 07.03.2010   Titel:              Zitieren

Soweit ich weiß, gibt es neben mysql_real_connect auch noch mysql_connect.
Dieses erfordert neben nem zeiger auf MYSQL noch host, user und passwort.
Damit brauchst du keine Datenbank angeben.
Ich verwende dieses Schema bei der Installation von einigen PHP-Projekten.

_________________
Der Vorteil in der Klugheit besteht darin, dass man sich dumm stellen kann.
(Code::Blocks 10.5, mingw32 gcc 4.4.1)
qcc
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.02.2010
Beiträge: 54
Beitrag qcc Mitglied 23:54:40 07.03.2010   Titel:              Zitieren

sentinel.dd schrieb:
Wie kann ich eine CREATE DATABASE machen ohne einen connect?

Gar nicht. Du brauchst ja ein Connection-Handle um die Operationen an den Server zu senden. Du musst im Vorfeld sicherstellen dass die Datenbank erreichbar ist (sprich: Host/User/Password/Dbname muss alles korrekt sein).

Wenn du eine Datenbank ohne Server brauchst, schau dir mal SQLite an.
-=]xXx[=-
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.04.2003
Beiträge: 456
Beitrag -=]xXx[=- Mitglied 09:50:54 08.03.2010   Titel:              Zitieren

@BasicMan01
mysql_real_connect ist die richtige Funktion, mysql_connect ist deprecated

@sentinel.dd
Wie schon gesagt kannst du natürlich nur mit einem Datenbanksystem arbeiten mit dem du auch verbunden bist. Ein connect ist also unerlässlich. Setzt doch die DB bei connect einfach NULL, führe dann deine "CREATE DATABASE IF NOT EXISTS saia" aus und mach ein "USING saia"

mfg
xXx

_________________
Wer nichts macht, macht auch nichts falsch!
BasicMan01
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.02.2004
Beiträge: 646
Beitrag BasicMan01 Mitglied 17:33:09 20.03.2010   Titel:              Zitieren

-=]xXx[=- schrieb:

mysql_connect ist deprecated

Glaub ich dir gerne. Bei google hab ich dahingehend ab und zu auch in Ansaetzen
was gefunden. Gibt es denn einen Ueberblick, welche Funktionen in welcher Version
deprecated sind?
Auf folgender Seite ist mysql_connect naemlich noch nicht als deprecated markiert.
http://www.w3schools.com/php/php_ref_mysql.asp

//Edit:
Sorry, war zu schnell, habs gefunden
http://dev.mysql.com/doc/refman/5.0/en/mysql-connect.html

_________________
Der Vorteil in der Klugheit besteht darin, dass man sich dumm stellen kann.
(Code::Blocks 10.5, mingw32 gcc 4.4.1)


Zuletzt bearbeitet von BasicMan01 am 17:41:07 20.03.2010, insgesamt 1-mal bearbeitet
C/C++ Forum :: Datenbanken ::  MySQL CREATE DATABASE schmiert ab   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.