I have to insert some values into a MS SQL-Database on a Windows Machine, but also have to insert some values in a MySQL-Database on Linux soon. So I looked around and found SOCI and OTL 4.0.
I decided to use OTL 4.0 because it looked more easy for one, who haven't worked with C++ and databases before.
I tried to compile a modification of an example ( made it easier) and stumbled serveral times.
My Code so far:
#include "db.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include "plc.h"
#include <sqlncli.h>
#include <oledbdm.h>
using namespace std;
#define OTL_ODBC_MSSQL_2008 // Compile OTL 4/ODBC, MS SQL 2008
//#define OTL_ODBC // Compile OTL 4/ODBC. Uncomment this when used with MS SQL 7.0/ 2000
#include "otlv4.h" // include the OTL 4.0 header file
otl_connect db; // connect object
void insert(TIMESTAMP_STRUCT tm, string table)
{
string sql_statement;
//sql_statement = "insert into " << table << " values (:"
otl_stream o(50, // buffer size
"insert into test_tab2 values(:f1<float>,:f2<timestamp>)",
// SQL statement
db // connect object
);
for(int i=1;i<=10;++i){
tm.year=1998;
tm.month=10;
tm.day=19;
tm.hour=23;
tm.minute=12;
tm.second=12;
tm.fraction=0;
o<<(float)i<<tm;
}
}
void getDataIntoDB(plcdata &data)
{
otl_connect::otl_initialize(); // initialize ODBC environment
try{
db.rlogon("UID=scott;PWD=tiger;DSN=mssql2008"); // connect to ODBC
}
catch(otl_exception& p){ // intercept OTL exceptions
cerr<<p.msg<<endl; // print out error message
cerr<<p.stm_text<<endl; // print out SQL that caused the error
cerr<<p.sqlstate<<endl; // print out SQLSTATE message
cerr<<p.var_info<<endl; // print out the variable that caused the error
}
db.logoff(); // disconnect from Oracle
}
Build log:
-------------- Build: Debug in TimeLogger (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -DOTL_ODBC -IC:\Users\bauermar\GTK -IC:\Users\bauermar\Documents\Sources\EN3 -I"C:\Program Files\Microsoft SQL Server\90\SDK\Include" -c C:\Users\bauermar\Documents\Sources\TimeLogger\db.cpp -o obj\Debug\db.o In file included from C:\Users\bauermar\Documents\Sources\TimeLogger\db.cpp:8:0: C:\Program Files\Microsoft SQL Server\90\SDK\Include/sqlncli.h:17:0: warning: ignoring #pragma warning [-Wunknown-pragmas] In file included from C:\Users\bauermar\Documents\Sources\TimeLogger\db.cpp:8:0: C:\Program Files\Microsoft SQL Server\90\SDK\Include/sqlncli.h:133:19: fatal error: oledb.h: No such file or directory compilation terminated. Process terminated with status 1 (0 minute(s), 0 second(s)) 1 error(s), 1 warning(s) (0 minute(s), 0 second(s))
I installed the Microsoft SQL Native Client with SDK, I included all libs and headers in the IDE of Code::Blocks I also included the sqlncli.h like it is said here
But I have no idea how to continue
I'm using Windows 7, Code::Blocks and MinGW32
Does anybody knows a good tutorial for working on DBs with C++ on several OS? Had someone the same problem? Is there a easier way to handle that with C++?
Thanks in advice!
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire