Thank you very much for the response.
Unless I'm doing something foolish (always a possibility) that doesn't seem
to work so...
here's the whole test program.
#include "stdafx.h"
#include "sqlite3.h"
#include "stdio.h"
#include "string.h"
#include "string"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[]) //default project main
{
int rc, i, ncols;
sqlite3 *db;
sqlite3_stmt *stmt;
//char *sql;
//replaced by
string sql;
const char *tail;
rc = sqlite3_open("foods.db", &db);
if(rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return(1);
}
//====== my additions to get thie definitive guide example working
============
//sql = "create table episodes (id integer primary key, season int, name
text);";
////rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
////replaced by
//rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt,
&tail);
//rc = sqlite3_step(stmt);
//
//sql = "insert into episodes(id, season, name) Values(1,2,'bill');";
////rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
////replaced by
//rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt,
&tail);
//rc = sqlite3_step(stmt);
//
//sql = "insert into episodes(id, season, name) Values(2,3,'bob')";
////rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
////replaced by
//rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt,
&tail);
//rc = sqlite3_step(stmt);
sql = "BEGIN;"; //you need to add newline here
sql += "create table episodes (id integer primary key, season int, name
text);";
sql += "insert into episodes(id, season, name) Values(1,2,'bill');";
sql += "insert into episodes(id, season, name) Values(2,3,'bob');";
sql += "COMMIT;";
rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt, &tail);
rc = sqlite3_step(stmt);
//============================================================================
sql = "select * from episodes;";
// rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
//replaced by
rc = sqlite3_prepare(db, sql.c_str(), strlen(sql.c_str()), &stmt, &tail);
if(rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
}
rc = sqlite3_step(stmt);
ncols = sqlite3_column_count(stmt);
while(rc == SQLITE_ROW) {
for(i=0; i < ncols; i++) {
fprintf(stderr, "'%s' ", sqlite3_column_text(stmt, i));
}
fprintf(stderr, "\n");
rc = sqlite3_step(stmt);
}
sqlite3_finalize(stmt);
sqlite3_close(db);
//if( remove( "foods.db" ) != 0 ) perror( "Error deleting file" ); else
puts( "File successfully deleted" );
getchar();
return 0;
}
On 21 June 2011 12:32, Black, Michael (IS) <[email protected]> wrote:
> I believe this will work if you put the SQL-required semi-colons at the end
> of your statements.
>
>
>
> sql = "BEGIN;"; //you need to add newline here
> sql += "create table episodes (id integer primary key, season int, name
> text);";
> sql += "insert into episodes(id, season, name) Values(1,2,'bill');";
> sql += "insert into episodes(id, season, name) Values(2,3,'bob');";
> sql += "COMMIT;";
>
> I would say most people don't do this as any error returns won't tell you
> much. You'd normally prepare each seperately.
>
>
>
>
>
> Michael D. Black
>
> Senior Scientist
>
> NG Information Systems
>
> Advanced Analytics Directorate
>
>
>
> ________________________________
> From: [email protected] [[email protected]] on
> behalf of e-mail mgbg25171 [[email protected]]
> Sent: Tuesday, June 21, 2011 6:22 AM
> To: [email protected]
> Subject: EXT :[sqlite] Howto...multi-sqlite command string through
> sqlite3_prepare_v2() to create SINGLE statement
>
> The commented out lines work.
> I'm wondering...
> a) is it possible to do what's not commented out
> b) what's the syntax re the "sql =..." and "sql +=..." lines
> Any help much appreciated!
> [code]
> //sql = "create table episodes (id integer primary key, season int, name
> text);";
> ////rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
> ////replaced by
> //rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt,
> &tail);
> //rc = sqlite3_step(stmt);
> //
> //sql = "insert into episodes(id, season, name) Values(1,2,'bill');";
> ////rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
> ////replaced by
> //rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt,
> &tail);
> //rc = sqlite3_step(stmt);
> //
> //sql = "insert into episodes(id, season, name) Values(2,3,'bob')";
> ////rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
> ////replaced by
> //rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt,
> &tail);
> //rc = sqlite3_step(stmt);
>
> sql = "BEGIN"; //you need to add newline here
> sql += "create table episodes (id integer primary key, season int, name
> text)";
> sql += "insert into episodes(id, season, name) Values(1,2,'bill')";
> sql += "insert into episodes(id, season, name) Values(2,3,'bob')";
> sql += "COMMIT";
> rc = sqlite3_prepare(db, sql.c_str(), strlen( sql.c_str() ), &stmt, &tail);
> rc = sqlite3_step(stmt);
> [code]
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users