2016-02-15 160 views
1

我想從Arduino中插入一個變量值到MySQL數據庫表中,我嘗試了不同的方式,但它沒有成功。插入Arduino變量值到MySQL表

有人可以幫我下面的這段代碼嗎?

char INSERT_SQL[] = "INSERT INTO Meter.consumption VALUES ("var");"; 

有:

void loop() { 

unsigned long var =(millis()/1000); 

if(var%30 == 0) 
    { 

    var = (var==0)?1:var; 

    char INSERT_SQL[] = "INSERT INTO Meter.consumption VALUES ("var");"; 

    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); 

    cur_mem->execute(INSERT_SQL); 

    delete cur_mem; 

    } 

所有答案都讚賞...

回答

0

的問題是,你需要連接變量var與SQL命令。爲了做到這一點,您可以使用一個輔助變量query結合sprintf函數來構建正確的INSERT命令。

替換此:

char INSERT_SQL[] = "INSERT INTO Meter.consumption VALUES ("d");"; 
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); 
cur_mem->execute(INSERT_SQL); 

有了:

char INSERT_SQL[] = "INSERT INTO Meter.consumption VALUES (%d);"; 
char query[255]; 
sprintf(query, INSERT_SQL, var); 
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn); 
cur_mem->execute(query); 

注意,雖然sprintf是Arduino的無證功能,它的工作原理類似於一個在C.可用你可以看到更多的細節here 。由於它是一個內置函數,因此不需要在代碼中包含任何附加頭文件。

+0

非常感謝你解決了我的問題,還有一件事是我的LCD上從79開始的毫秒計數器,你認爲問題是什麼? –

+0

你明白了!我不習慣使用液晶顯示器,但我確信其他開發人員可以幫助你,如果你創建另一個問題與更多關於這個特定問題的細節。 –

+0

非常感謝你親愛的。 –

0

替換此

char INSERT_SQL[] = "INSERT INTO Meter.consumption VALUES ('var');"; 
+0

感謝您的回覆,我將其替換,但沒有任何內容發送到桌面! –