I'm trying to use the EDB Library for my Arduino MEGA 2560 for storing data like temperature etc. in a sqlite databse.
Now, when I try to open the created or modified database via a sqlite browser, I'm always asked to type a SQLCipher password in, even when I didn't set one.
Does anyone know a fix?
#include "Arduino.h"
#include <EDB.h>
#include <SD.h>
File dbFile;
#define TABLE_SIZE 512
#define RECORDS_TO_CREATE 10
struct LogEvent {
int id;
int temperature;
}
logEvent;
void writer(unsigned long address, byte data)
{
dbFile.seek(address);
dbFile.write(data);
dbFile.flush();
}
byte reader(unsigned long address)
{
dbFile.seek(address);
return dbFile.read();
}
EDB db(&writer, &reader);
void printError(EDB_Status err)
{
Serial.print("ERROR: ");
switch (err)
{
case EDB_OUT_OF_RANGE:
Serial.println("Recno out of range");
break;
case EDB_TABLE_FULL:
Serial.println("Table full");
break;
case EDB_OK:
default:
Serial.println("OK");
break;
}
}
void insertOneRecord(int recno)
{
Serial.print("Inserting record at recno: ");
Serial.print(recno);
Serial.print("... ");
logEvent.id = recno;
logEvent.temperature = random(1, 125);
EDB_Status result = db.insertRec(recno, EDB_REC logEvent);
if (result != EDB_OK) printError(result);
Serial.println("DONE");
}
void setup()
{
Serial.begin(9600);
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT);
if (!SD.begin()) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
Serial.println("Opening example.db ...");
dbFile = SD.open("data.db", FILE_WRITE);
insertOneRecord(3);
/*db.create(0, TABLE_SIZE, sizeof(logEvent));
Serial.print("Record Count: "); Serial.println(db.count());
Serial.println("Creating Records...");
int recno;
for (recno = 1; recno <= RECORDS_TO_CREATE; recno++)
{
logEvent.id = recno;
logEvent.temperature = recno * 2;
db.appendRec(EDB_REC logEvent);
}
Serial.print("Record Count: "); Serial.println(db.count());
for (recno = 1; recno < RECORDS_TO_CREATE; recno++)
{
db.readRec(recno, EDB_REC logEvent);
Serial.print("ID: "); Serial.println(logEvent.id);
Serial.print("Temp: "); Serial.println(logEvent.temperature);
}
*/
}
void loop()
{
}