0

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 :)

0

1 Answer 1

0

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.

Sign up to request clarification or add additional context in comments.

1 Comment

The erros were comming from the functions you just added. See my edit.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.