hi
so nach vielem hin und her hab ich mir jetzt ne umgebung zusammen gabastelt...
also hab ne suse 9.3 laufen und schreibe zwar in dem eclipse kompeliere aber über makefile da ich leider noch net herraus bekommen hab wieso eclipse mir zwar meinen code fehlerfrei durchcompeliert (bringt keine fehlermeldungen) aber mir halt keine ausführbare datei erstellt bzw sie ausführt...
also hier erstmal meine dateien dann zu meinem problem:
main.c:
/* main.c */
#include <stdio.h>
#include <mysql.h>
#include "common.h"
#define def_db_host "10.0.88.104"
#define def_db_user "test"
#define def_db_name "avs"
#define def_db_port 0
#define def_unix_socket NULL
MYSQL *mysql;
int main(int argc, char *argv[]){
MYSQL_RES *res_set;
char *db_pass;
db_pass = get_tty_password(NULL);
mysql = db_connect (def_db_host, def_db_user, db_pass, def_db_name,
def_db_port, def_unix_socket, 0);
if(mysql == NULL){
exit(1);
}else{
fprintf(stdout, "Verbunden.\n");
if(mysql_query(mysql, "select * from user")==0){
res_set = mysql_store_result(mysql);
if(res_set != NULL){
print_result_set(mysql, res_set);
mysql_free_result(res_set);
}else{
if(mysql_field_count(mysql)>0){
fprintf(stderr, "Keine Ergebnismenge, mysql_store_result() gescheitert: %s\n", mysql_error(mysql));
}else{
printf("Abfrage nicht für Datenbankrückgabe vorgesehen.\n");
}
}
}else{
fprintf(stderr, "Abfrage gescheitert:%s\n",mysql_error(mysql));
}
}
db_disconnect(mysql);
exit(0);
}
void print_result_set(MYSQL *mysql, MYSQL_RES *res_set){
unsigned int f;
MYSQL_ROW row;
printf("huhu");
while((row = mysql_fetch_row(res_set))!=NULL){
f=0;
while(f<mysql_num_fields(res_set)){
if(f>0){
fputc('\t', stdout);
fprintf(stdout, "%s", row[f]);
f++;
}
}
if(mysql_errno(mysql)==0){
fprintf(stdout,"Anzahl zurückgegebener Zeilen: %lu.\n",
(unsigned long)mysql_num_rows(res_set));
}else{
fprintf(stderr, "mysql_fetch_row() gescheitert.\n");
}
}
}
common.c:
/* common.c */
#include <stdio.h>
#include <mysql.h>
#include "common.h"
MYSQL *db_connect(char *db_host,
char *db_user,
char *db_pass,
char *db_name,
unsigned int db_port,
char *unix_socket,
unsigned int db_flags){
MYSQL *mysql;
if((mysql = mysql_init(NULL))==NULL){
fprintf( stderr, "mysql_init() gescheitert \n");
return(NULL);
}
if(mysql_real_connect(mysql, db_host, db_user, db_pass, db_name,
db_port, unix_socket,db_flags)==NULL){
fprintf(stderr, "mysql_real_connect() gescheitert \nFehler %u: %s\n",
mysql_errno(mysql), mysql_error(mysql));
return(NULL);
}
}
void db_disconnect(MYSQL *mysql){
mysql_close(mysql);
}
common.h
#ifndef COMMON_H_
#define COMMON_H_
#endif /*COMMON_H_*/
MYSQL *db_connect(char *db_host,
char *db_user,
char *db_pass,
char *db_name,
unsigned int db_port,
char *db_socket,
unsigned int db_flags);
void db_disconnect(MYSQL *mysql);
makefile:
CC = gcc
INCLUDES = -I/usr/include/mysql
LIBS = -L/usr/include/mysql -lmysqlclient -lm
all: myapp
main.o: main.c common.h
$(CC) -c $(INCLUDES) main.c
common.o: common.c common.h
$(CC) -c $(INCLUDES) common.c
myapp: main.o common.o
$(CC) -o myapp main.o common.o $(LIBS)
clean:
rm -f myapp main.o common.o
soweit zu dem code.. die hab ich aus dem buch "mysql in 21 tagen"
so nun zu meinem problem:
in der main.c in der zeile wo ich das mysq_query aufruf bzw ausführen lassen will bekomm ich ein speicherzugriffsfehler...
nachdem ich nun duzend mal den code kontrolliert hab und ich einfach keinen fehler find, könnt ihr mir viellicht weiterhelfen...
bin etwas ratlos wieso da nen speicherzugriffsfehler kommt...
thx für hilfe
LordTerra