MySQL
De ArduWiki
Contenido
Descripción
La librería MySQL de Charles Bell se puede usar para conectar su proyecto Arduino directamente a un servidor MySQL sin usar una computadora intermedia o un servicio web o basado en la nube.
Tener acceso directo a un servidor de base de datos significa que puede almacenar los datos adquiridos de su proyecto, así como verificar los valores almacenados en las tablas en el servidor. Esto también significa que puede configurar su propio servidor MySQL local para almacenar sus datos y eliminar la necesidad de conectividad a Internet. Si eso no es un problema, aún puede conectarse y almacenar datos en un servidor MySQL a través de su red, Internet o incluso en la nube.
Placas aplicables
Sintaxis
#include <Ethernet.h> #include <MySQL_Connection.h> #include <MySQL_Cursor.h>
Métodos
Método | Descripción |
---|---|
connect() | Conecta con la base de datos |
execute() | Ejecuta una consulta |
show_results() | Muestra el resultado de la consulta |
field_struct() | Muestra la estructura de la tabla |
Comentarios
Advertencias
Ejemplo
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server_addr(192.168,1,35); //IP del servidor MySQL
char usuario[] = "root"; //usuario MySQL
char clave[] = ""; //Clave usuario MySQL
//Consulta
char query[] = "SELECT campo1 FROM base.tabla WHERE campo2 = 'Lima'";
EthernetClient client;
MySQL_Connection conn((Client *)&client);
//Crea instancia de conexion
MySQL_Cursor cur = MySQL_Cursor(&conn);
void setup() {
Serial.begin(115200);
Ethernet.begin(mac_addr);
Serial.println("Conectando...");
if (conn.connect(server_addr, 3306, usuario, clave)) {
delay(1000);
}else{
Serial.println("Fallo la conexion.");
}
}
void loop() {
row_values *row = NULL;
long head_count = 0;
delay(1000);
Serial.println("1) Demonstrating using a cursor dynamically allocated.");
// Initiate the query class instance
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
//Ejecutando la consulta
cur_mem->execute(query);
//Opcionalmente se extraen los nombres de columna
column_names *columns = cur_mem->get_columns();
// Read the row (we are only expecting the one)
do {
row = cur_mem->get_next_row();
if (row != NULL) {
head_count = atol(row->values[0]);
}
} while (row != NULL);
//Borrando el cursor de memoria
delete cur_mem;
// Show the result
Serial.print(" NYC pop = ");
Serial.println(head_count);
delay(500);
Serial.println("2) Demonstrating using a local, global cursor.");
// Execute the query
cur.execute(query);
// Fetch the columns (required) but we don't use them.
cur.get_columns();
// Read the row (we are only expecting the one)
do {
row = cur.get_next_row();
if (row != NULL) {
head_count = atol(row->values[0]);
}
} while (row != NULL);
// Now we close the cursor to free any memory
cur.close();
// Show the result but this time do some math on it
Serial.print(" NYC pop = ");
Serial.println(head_count);
Serial.print(" NYC pop increased by 12 = ");
Serial.println(head_count+12);
}
Vea también