MySQL Forums
Forum List  »  Connector/C++

(Language C++) Variables in mysql_query???
Posted by: Christopher Zeman
Date: November 16, 2006 11:43AM

I am writing a small program in C++ that accepts data on a socket connection from SBC's. The SBC's send data in the following format: Unit Name,1,2. 1 is the unit number, and 2 is the number of cycles on that unit.

I want to automatically create a table for each Unit Name that I receive. Here is what I have so far:
#include "ServerSocket.h"
#include "SocketException.h"
#include <string>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <mysql/mysql.h>

int main ( int argc, int argv[] )
      		// Create the socket
      		ServerSocket server ( 14036 );
		while ( true )
			ServerSocket new_sock;
			server.accept ( new_sock );

	      			while ( true )
		  			std::string data;
		  			new_sock >> data;
		  			new_sock << data;
		  			using namespace std;
		  			string trainid(data);

		  			std::string unit_name, unit_num, num_cycles;
					std::string::size_type pos = trainid.find(',');
		  			if (pos != std::string::npos)
		      				ride = trainid.substr(0,pos);
		      				cout << unit_name << endl;

   		  			trainid = trainid.substr(pos+1);
		  			pos = trainid.find(',');
	   	  			if (pos != std::string::npos)
		      				unit_num = trainid.substr(0,pos);
		      				cout << unit_num << endl;

		   			num_cycles = trainid.substr(pos+1);
		   			cout << num_cycles << endl;
					MYSQL db_conn;
  					MYSQL_RES *result;
					MYSQL_ROW row;
					MYSQL_FIELD *fields;
					unsigned int numrows;
					unsigned int numfields;
					int c;
					char user[] = "user";
					char password[] = "password";
					char host[] = "localhost";
					char dbname[] = "TrainID";
					char buffer[BUFSIZ];

					// Attempt to connect to the database.
					if (mysql_real_connect(&db_conn, host, user, password, dbname, 0, NULL, 0) == NULL)
						fprintf(stderr, "Could not connect to mysql server.  Error %s\n", mysql_error(&db_conn));
					// Create a table for the ride if it doesn't already exist.
					string create_table1 = "CREATE TABLE ";
					string create_table2 = " (Unit INT PRIMARY KEY, Cycles BIGINT);";
					string create_table3 = create_table1 + unit_name + create_table2;
					if (!mysql_query(&db_conn, create_table3) == 0)
						fprintf(stderr, "Could not create the table.  Error %s\n", mysql_error(&db_conn));
	  		catch ( SocketException& ) {}

catch ( SocketException& e )
      		std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";

return 0;

I try to compile and get the following error:
[root@automation Devel]# make
g++    -c -o ServerSocket.o ServerSocket.cpp
g++    -c -o Socket.o Socket.cpp
g++    -c -o TrainID.o TrainID.cpp
TrainID.cpp: In function `int main(int, int*)':
TrainID.cpp:76: error: cannot convert `std::string' to `const char*' for argument `2' to `int mysql_query(MYSQL*, const char*)'
make: *** [TrainID.o] Error 1

I understand what is happening here, but what do I need to do? I can't seem to find an answer. Am I going to run into the same thing when I try to insert values into my columns?

Thanks! :)

Options: ReplyQuote

Written By
(Language C++) Variables in mysql_query???
November 16, 2006 11:43AM

Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.