Matfik69
Matfik69

Reputation: 3

Arduino + MySql + MySqlIO error when compiling

I'm trying to make this project. When i try to compile this code:

#include <mysql.h>

char *host, *user, *pass, *db;
int isconnected = 0;

void setup()
{
    Serial.begin(9600);
    host = "localhost";
    user = "root";
    pass = "";
    db = "arduino";
    isconnected = mysql_connect(host,user,pass,db);
    if(isconnected){
        Serial.print("Connected to ");
                Serial.println(host);
    }
    else{
        Serial.println("Connection failed.");
    }
    mysql_close();
}

void loop(){}

Maybe problem is with libraries or Arduino IDE. I get these errors and warnings:

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino: In function 'void setup()':

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:30:7: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

host = "localhost";

   ^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:31:7: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

user = "root";

   ^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:32:7: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

pass = "";

   ^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:33:5: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

db = "arduino";

 ^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\mysql.cpp: In function 'String mysql_result_query(String, String)':

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\mysql.cpp:67:10: error: converting to 'String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

return 0;

      ^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\mysql.cpp:71:10: error: converting to 'String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

return 0;

      ^

exit status 1

Edit: There is library mysql.cpp.

#include "mysql.h"

int mysql_connect(char *host, char *user, char *pass, char *db){
    Serial.print("host=");
        Serial.println(host);
    Serial.print("user=");
        Serial.println(user);
    Serial.print("pass=");
        Serial.println(pass);
    Serial.print("db=");
        Serial.println(db);
        Serial.println("mysql_connect()");
    int x = Serial.read();
        if(x == '-')
        return 0;
        while( x <= 0){
         x = Serial.read();
         if(x == '-')
           return 0;
        }
    return x-48;
}

int is_mysql(){
    Serial.print("is_mysql()");
    int x = Serial.read();
        if(x == '-')
        return 0;
        while( x <= 0){
         x = Serial.read();
         if(x == '-')
           return 0;
        }
    return x-48;
}

void mysql_close(){
    Serial.println("mysql_close()");
}
int mysql_query(char *query){
    Serial.print("query=");
        Serial.println(query);
    int x = Serial.read();
         if(x == '-' || x == '0')
        return 0;
        while( x <= 0){
         x = Serial.read();
         if(x == '-' || x == '0')
           return 0;
        }
    return x-12;
}

String mysql_result_query(String query, String field){
  String res = "";
  String q = "query=" + query + "&field=" + field;
  Serial.println(q);
  res = Serial.readString();
  if(res == "-")
  return 0;
  while(res.length() <= 0){
  res = Serial.readString();  
  if(res == "-")
  return 0;
  }
  return res;
}

And there is mysql.h:

#ifndef mysql_h
#define mysql_h

#include "Arduino.h"

int mysql_connect(char *, char *, char *, char *);
void mysql_close();
int is_mysql();
int mysql_query(char *);
String mysql_result_query(String, String);


#endif

I don't know how to solve this. I could'nt find any solutions. Sorry for my english :)

Upvotes: 0

Views: 880

Answers (1)

Ouss4
Ouss4

Reputation: 479

You need to initialize your variables at the beginning. Try this:

#include <mysql.h>

char *host = "localhost", *user="root", *pass="", *db="arduino";
int isconnected = 0;

void setup()
{
    Serial.begin(9600);
    isconnected = mysql_connect(host,user,pass,db);
    if(isconnected){
        Serial.print("Connected to ");
                Serial.println(host);
    }
    else{
        Serial.println("Connection failed.");
    }
    mysql_close();
}

void loop(){}

The erros are comming from your mysql_result_query function. You are returning 0 for a function that returns a String.

Try this.

String mysql_result_query(String query, String field){
  String res = "";
  String q = "query=" + query + "&field=" + field;
  Serial.println(q);
  res = Serial.readString();
  if(res == "-")
  return "";
  while(res.length() <= 0){
  res = Serial.readString();  
  if(res == "-")
  return "";
  }
  return res;
}

Here I'm returning an empty string. You can check it later with the length() method.

Upvotes: 0

Related Questions