Hi,
Attached is my test program while exercising the C API of the MySQL.
Of course I have replaced the host name, user name, password and database
name with dummy ones.
I am using RH 6.1. The MySQL version is 3.22.
Essentially you need to do
#include <mysql.h>
...
main()
{
MYSQL mysql;
MYSQL_RES *result;
...
mysql_init(&mysql);
...
if (!mysql_real_connect(&mysql, "[Host]", "[user]", "[passwd]",
"[database]",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}
else
{
...
sprintf(sqlcomd, "SELECT * FROM good_runs WHERE run_number = %s",
runnumber);
mysql_query(&mysql, sqlcomd);
result = mysql_use_result(&mysql);
...
}
}
On Thu, 20 Sep 2001, HaB JacKaL wrote:
> Can someone give me a quick *complete* example code of setting up a
> connection, performing a small query, and reading back the result?
>
>
> The docs conflict in a few places as far as how to declare the data types.
> (in some places, they are pointers, in others they are not). Also, the
> examples, sadly, just aren't very good. And there is no example for
> mysql_use_result(). (the example code uses mysql_store_result())
>
> I have tried every combination of pointers and regular datatypes I can think
> of, but I'm still generating errors on compile.
>
> Running on linux (RH 7.1), with MySQL 3.23.39.
>
> I'm using this:
>
> MYSQL mysql;
> MYSQL_RES *result;
> MYSQL_ROW row;
> int error;
>
> if(!mysql_init(&mysql))
> {
> printf("init failed!\n");
> exit(1);
> }
>
> if(!mysql_real_connect(&mysql, "localhost",
> "user", "passwd", "dbname", 0, "", 0))
> {
> printf("doh! connect failed...\n");
> exit(1);
> }
> else
> {
> error = mysql_select_db(&mysql, "label");
> error = mysql_query(&mysql, "SELECT * FROM _countries");
> result = mysql_use_result(&mysql);
> while((row = mysql_fetch_row(result)))
> {
>
> mysql_init() is returning fine...
>
> The connection is failing. I know the username/password combo works, since
> I can use it on the command line. The client program is being run on the
> same linux machine as the mysql server.
>
> Any other ideas?
>
> Does mysqld have a debug mode? Some way I can see if the client is even
> trying to connect, and what data the server is getting?
>
> Also, are the datatypes declared correctly for the rest of the code? The
> docs conflict as to whether or not result should be declared as a pointer or
> not.
>
>
> Thanks.
>
> -HaB
>
>
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp
>
>
> ---------------------------------------------------------------------
> Before posting, please check:
> http://www.mysql.com/manual.php (the manual)
> http://lists.mysql.com/ (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
--
Best regards, Yen-Chu Chen
[EMAIL PROTECTED]
Office: (630) 840-5403, FAX: (630) 840-2968
(886)-(2)-2789-9681 (Inst. of Phys., Academia Sinica)
#include <mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
main()
{
MYSQL mysql;
MYSQL_RES *result;
MYSQL_FIELD *fields;
MYSQL_ROW row;
unsigned long *lengths;
char *runnumber=" ";
char *msg=" ";
char run[10];
char evn[10];
int skip;
int first;
char sqlcomd[200];
unsigned int num_fields;
unsigned int i;
int msgsize;
mysql_init(&mysql);
fprintf(stderr, "Try to connect to database ...\n");
if (!mysql_real_connect(&mysql, "[host]", "[user]", "[passwd]",
"[database]",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}
else
{
msg = "67890|12345";
sprintf(run, "%s", "");
sprintf(evn, "%s", "");
first = 1;
skip = 0;
for(i=0; i<20; i++)
{
if(msg[i] == 0)
{
if(msg[i+1] == 0) printf("End of string.\n");
break;
}
if((msg[i] == '|') | msg[i] == ' ')
{
first--;
skip = 1;
printf("msg[%d] = %c, Got it!!! \n", i, msg[i]);
}
else
{
skip = 0;
printf("msg[%d] = %d \n", i, msg[i]);
}
if(skip == 0)
{
if(first == 1)
{
sprintf(run, "%s%c", run, msg[i]);
}
else
{
sprintf(evn, "%s%c", evn, msg[i]);
}
}
}
printf("Run number is %s. \n", run);
printf("Event number is %s. \n", evn);
runnumber = run;
sprintf(sqlcomd, "INSERT INTO good_runs SET run_number = %s", runnumber);
sprintf(sqlcomd, "%s , period = 'August_2001'", sqlcomd);
sprintf(sqlcomd, "%s , creation_time = NOW()", sqlcomd);
sprintf(sqlcomd, "%s , summary_events = %s", sqlcomd, evn);
printf("%s \n", sqlcomd);
mysql_query(&mysql, sqlcomd);
sprintf(sqlcomd, "SELECT * FROM good_runs WHERE run_number = %s", runnumber);
mysql_query(&mysql, sqlcomd);
result = mysql_use_result(&mysql);
num_fields = mysql_num_fields(result);
fields = mysql_fetch_fields(result);
lengths = mysql_fetch_lengths(result);
while ((row = mysql_fetch_row(result)))
{
for(i = 0; i < num_fields; i++)
{
printf("Field %u is %s = [%s] \n", i, fields[i].name, row[i]);
/* printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL"); */
}
}
fprintf(stderr, "Delete the testing entry. \n");
sprintf(sqlcomd, "DELETE FROM good_runs WHERE run_number = %s", runnumber);
mysql_query(&mysql, sqlcomd);
fprintf(stderr, "Close the connection to database. \n");
mysql_close(&mysql);
}
}
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php