У меня возникла проблема с отправкой данных о переменной в базу данных MySQL. Проблема в том, что я пытаюсь отправить данные RFID с переменной.
String INSERT_SQL ="INSERT INTO database.table VALUES('0 ',"conteudo")";
Выдает эту ошибку.
unable to find string literal operator 'operator""conteudo' with 'const char [43]', 'unsigned int' arguments
Вот полный код.
#include
#include
#include
#include
#include
Servo servo;
#define SS_PIN 21
#define RST_PIN 22
MFRC522 mfrc522(SS_PIN, RST_PIN);
const char* ssid = "";
const char* password = "";
char user[] = "";
char passw[] = "";
String conteudo = "";
#define MYSQL_DEBUG_PORT Serial
#define MYSQL_LOGLEVEL 0
#define USING_HOST_NAME true
#if USING_HOST_NAME
char server[] = "";
char default_database[] = "";
char default_table[] = "";
#else
IPAddress server(192, 168, 0, 250);
#endif
uint16_t server_port = 3306;
MySQL_Connection conn((Client *)&client);
MySQL_Query *query_mem;
int led_CH1 = 14;
int pos = 0;
void setup()
{
pinMode(led_CH1, OUTPUT);
Serial.begin(115200);
while (!Serial && millis() < 5000);
SPI.begin();
iniciarWiFi();
MYSQL_DISPLAY1("Connecting to", ssid);
MYSQL_DISPLAY3("Connecting to SQL Server @", server, ", Port =", server_port);
MYSQL_DISPLAY5("User =", user, ", PW =", passw, ", DB =", default_database);
mfrc522.PCD_Init();
servo.attach(25);
servo.write(100);
Serial.println("Aproxime o seu cartao do leitor...");
Serial.println();
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
Serial.print("UID da tag :");
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte, HEX);
conteudo.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte, HEX));
}
Serial.println();
Serial.print("Mensagem : ");
conteudo.toUpperCase();
if (conteudo.substring(1) == "B0 21 A4 39")
{
digitalWrite(led_CH1, HIGH);
Serial.println("Cartao1 - Acesso concedido!");
Serial.println();
String INSERT_SQL ="INSERT INTO database.table VALUES('0 ',"conteudo")";
if (conn.connectNonBlocking(server, server_port, user, passw) != RESULT_FAIL)
{
delay(500);
runInsert();
conn.close(); // close the connection
}
else
{
MYSQL_DISPLAY("\nConnect failed. Trying again on next iteration.");
}
delay(100);
delay(3000);
for (pos = 0; pos = 0; pos -= 1) { // goes from 180 degrees to 0 degrees
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
digitalWrite(led_CH1, LOW);
}
if (conteudo.substring(1) != "B0 21 A4 39")
{
Serial.println("Cartao2 - Acesso negado !!");
Serial.println();
}
delay(1000);
}
void iniciarWiFi() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("A conectar ao WiFi .");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print('.');
delay(1000);
}
Serial.println(WiFi.localIP());
}
void runInsert()
{
// Initiate the query class instance
MySQL_Query query_mem = MySQL_Query(&conn);
if (conn.connected())
{
MYSQL_DISPLAY(INSERT_SQL);
// Execute the query
// KH, check if valid before fetching
if ( !query_mem.execute(INSERT_SQL.c_str()) )
{
MYSQL_DISPLAY("Insert error");
}
else
{
MYSQL_DISPLAY("Data Inserted.");
}
}
else
{
MYSQL_DISPLAY("Disconnected from Server. Can't insert.");
}
}
Подробнее здесь: https://stackoverflow.com/questions/726 ... st-char-43
Невозможно найти строковый литерал оператора 'operator''conteudo' с аргументами 'const char [43]', 'unsigned int' ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать строковый литерал .rdata в строковый литерал в стеке во время компиляции
Anonymous » » в форуме C++ - 0 Ответы
- 117 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как преобразовать список[int, int, int] в кортеж[int, int, int], а не в кортеж[int, ...]
Anonymous » » в форуме Python - 0 Ответы
- 288 Просмотры
-
Последнее сообщение Anonymous
-