public static int exec(sqlite3 db, /* The database on which the SQL executes */ string zSql, /* The SQL to be executed */ sqlite3_callback xCallback, /* Invoke this callback routine */ object pArg, /* First argument to xCallback() */ int NoErrors) { var Errors = ""; return(sqlite3_exec(db, zSql, xCallback, pArg, ref Errors)); }
static public int sqlite3_exec( sqlite3 db, /* The database on which the SQL executes */ string zSql, /* The SQL to be executed */ sqlite3_callback xCallback, /* Invoke this callback routine */ object pArg, /* First argument to xCallback() */ int NoErrors ) { string Errors = ""; return sqlite3_exec( db, zSql, xCallback, pArg, ref Errors ); }
public static int sqlite3_exec( sqlite3 db, /* The database on which the SQL executes */ string zSql, /* The SQL to be executed */ sqlite3_callback xCallback, /* Invoke this callback routine */ object pArg, /* First argument to xCallback() */ ref string pzErrMsg /* Write error messages here */ ) { var rc = SQLITE_OK; /* Return code */ var zLeftover = ""; /* Tail of unprocessed SQL */ sqlite3_stmt pStmt = null; /* The current SQL statement */ string[] azCols = null; /* Names of result columns */ var nRetry = 0; /* Number of retry attempts */ int callbackIsInit; /* True if callback data is initialized */ if (!sqlite3SafetyCheckOk(db)) { return(SQLITE_MISUSE_BKPT()); } if (zSql == null) { zSql = ""; } sqlite3_mutex_enter(db.mutex); sqlite3Error(db, SQLITE_OK, 0); while ((rc == SQLITE_OK || rc == SQLITE_SCHEMA && ++nRetry < 2) && zSql != "") { int nCol; string[] azVals = null; pStmt = null; rc = sqlite3_prepare(db, zSql, -1, ref pStmt, ref zLeftover); Debug.Assert(rc == SQLITE_OK || pStmt == null); if (rc != SQLITE_OK) { continue; } if (pStmt == null) { /* this happens for a comment or white-space */ zSql = zLeftover; continue; } callbackIsInit = 0; nCol = sqlite3_column_count(pStmt); while (true) { int i; rc = sqlite3_step(pStmt); /* Invoke the callback function if required */ if (xCallback != null && (SQLITE_ROW == rc || SQLITE_DONE == rc && callbackIsInit == 0 && (db.flags & SQLITE_NullCallback) != 0)) { if (0 == callbackIsInit) { azCols = new string[nCol]; //sqlite3DbMallocZero(db, 2*nCol*sizeof(const char*) + 1); //if ( azCols == null ) //{ // goto exec_out; //} for (i = 0; i < nCol; i++) { azCols[i] = sqlite3_column_name(pStmt, i); /* sqlite3VdbeSetColName() installs column names as UTF8 ** strings so there is no way for sqlite3_column_name() to fail. */ Debug.Assert(azCols[i] != null); } callbackIsInit = 1; } if (rc == SQLITE_ROW) { azVals = new string[nCol]; // azCols[nCol]; for (i = 0; i < nCol; i++) { azVals[i] = sqlite3_column_text(pStmt, i); if (azVals[i] == null && sqlite3_column_type(pStmt, i) != SQLITE_NULL) { //db.mallocFailed = 1; //goto exec_out; } } } if (xCallback(pArg, nCol, azVals, azCols) != 0) { rc = SQLITE_ABORT; sqlite3VdbeFinalize(pStmt); pStmt = null; sqlite3Error(db, SQLITE_ABORT, 0); goto exec_out; } } if (rc != SQLITE_ROW) { rc = sqlite3VdbeFinalize(pStmt); pStmt = null; if (rc != SQLITE_SCHEMA) { nRetry = 0; if ((zSql = zLeftover) != "") { var zindex = 0; while (zindex < zSql.Length && sqlite3Isspace(zSql[zindex])) { zindex++; } if (zindex != 0) { zSql = zindex < zSql.Length ? zSql.Substring(zindex) : ""; } } } break; } } sqlite3DbFree(db, ref azCols); azCols = null; } exec_out: if (pStmt != null) { sqlite3VdbeFinalize(pStmt); } sqlite3DbFree(db, ref azCols); rc = sqlite3ApiExit(db, rc); if (rc != SQLITE_OK && ALWAYS(rc == sqlite3_errcode(db)) && pzErrMsg != null) { //int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db)); //pzErrMsg = sqlite3Malloc(nErrMsg); //if (pzErrMsg) //{ // memcpy(pzErrMsg, sqlite3_errmsg(db), nErrMsg); //}else{ //rc = SQLITE_NOMEM; //sqlite3Error(db, SQLITE_NOMEM, 0); //} pzErrMsg = sqlite3_errmsg(db); } else if (pzErrMsg != "") { pzErrMsg = ""; } Debug.Assert((rc & db.errMask) == rc); sqlite3_mutex_leave(db.mutex); return(rc); }
public static int exec(sqlite3 db, /* The database on which the SQL executes */ string zSql, /* The SQL to be executed */ sqlite3_callback xCallback, /* Invoke this callback routine */ object pArg, /* First argument to xCallback() */ ref string pzErrMsg /* Write error messages here */) { return(sqlite3_exec(db, zSql, xCallback, pArg, ref pzErrMsg)); }
static public int sqlite3_exec( sqlite3 db, /* The database on which the SQL executes */ string zSql, /* The SQL to be executed */ sqlite3_callback xCallback, /* Invoke this callback routine */ object pArg, /* First argument to xCallback() */ ref string pzErrMsg /* Write error messages here */ ) { int rc = SQLITE_OK; /* Return code */ string zLeftover = ""; /* Tail of unprocessed SQL */ sqlite3_stmt pStmt = null; /* The current SQL statement */ string[] azCols = null; /* Names of result columns */ int nRetry = 0; /* Number of retry attempts */ int callbackIsInit; /* True if callback data is initialized */ if ( !sqlite3SafetyCheckOk( db ) ) return SQLITE_MISUSE_BKPT(); if ( zSql == null ) zSql = ""; sqlite3_mutex_enter( db.mutex ); sqlite3Error( db, SQLITE_OK, 0 ); while ( ( rc == SQLITE_OK || ( rc == SQLITE_SCHEMA && ( ++nRetry ) < 2 ) ) && zSql != "" ) { int nCol; string[] azVals = null; pStmt = null; rc = sqlite3_prepare( db, zSql, -1, ref pStmt, ref zLeftover ); Debug.Assert( rc == SQLITE_OK || pStmt == null ); if ( rc != SQLITE_OK ) { continue; } if ( pStmt == null ) { /* this happens for a comment or white-space */ zSql = zLeftover; continue; } callbackIsInit = 0; nCol = sqlite3_column_count( pStmt ); while ( true ) { int i; rc = sqlite3_step( pStmt ); /* Invoke the callback function if required */ if ( xCallback != null && ( SQLITE_ROW == rc || ( SQLITE_DONE == rc && callbackIsInit == 0 && ( db.flags & SQLITE_NullCallback ) != 0 ) ) ) { if ( 0 == callbackIsInit ) { azCols = new string[nCol];//sqlite3DbMallocZero(db, 2*nCol*sizeof(const char*) + 1); //if ( azCols == null ) //{ // goto exec_out; //} for ( i = 0; i < nCol; i++ ) { azCols[i] = sqlite3_column_name( pStmt, i ); /* sqlite3VdbeSetColName() installs column names as UTF8 ** strings so there is no way for sqlite3_column_name() to fail. */ Debug.Assert( azCols[i] != null ); } callbackIsInit = 1; } if ( rc == SQLITE_ROW ) { azVals = new string[nCol];// azCols[nCol]; for ( i = 0; i < nCol; i++ ) { azVals[i] = sqlite3_column_text( pStmt, i ); if ( azVals[i] == null && sqlite3_column_type( pStmt, i ) != SQLITE_NULL ) { //db.mallocFailed = 1; //goto exec_out; } } } if ( xCallback( pArg, nCol, azVals, azCols ) != 0 ) { rc = SQLITE_ABORT; sqlite3VdbeFinalize( ref pStmt ); pStmt = null; sqlite3Error( db, SQLITE_ABORT, 0 ); goto exec_out; } } if ( rc != SQLITE_ROW ) { rc = sqlite3VdbeFinalize( ref pStmt ); pStmt = null; if ( rc != SQLITE_SCHEMA ) { nRetry = 0; if ( ( zSql = zLeftover ) != "" ) { int zindex = 0; while ( zindex < zSql.Length && sqlite3Isspace( zSql[zindex] ) ) zindex++; if ( zindex != 0 ) zSql = zindex < zSql.Length ? zSql.Substring( zindex ) : ""; } } break; } } sqlite3DbFree( db, ref azCols ); azCols = null; } exec_out: if ( pStmt != null ) sqlite3VdbeFinalize( ref pStmt ); sqlite3DbFree( db, ref azCols ); rc = sqlite3ApiExit( db, rc ); if ( rc != SQLITE_OK && ALWAYS( rc == sqlite3_errcode( db ) ) && pzErrMsg != null ) { //int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db)); //pzErrMsg = sqlite3Malloc(nErrMsg); //if (pzErrMsg) //{ // memcpy(pzErrMsg, sqlite3_errmsg(db), nErrMsg); //}else{ //rc = SQLITE_NOMEM; //sqlite3Error(db, SQLITE_NOMEM, 0); //} pzErrMsg = sqlite3_errmsg( db ); } else if ( pzErrMsg != "" ) { pzErrMsg = ""; } Debug.Assert( ( rc & db.errMask ) == rc ); sqlite3_mutex_leave( db.mutex ); return rc; }
static public int exec( sqlite3 db, /* The database on which the SQL executes */ string zSql, /* The SQL to be executed */ sqlite3_callback xCallback, /* Invoke this callback routine */ object pArg, /* First argument to xCallback() */ ref string pzErrMsg /* Write error messages here */) { return sqlite3_exec( db, zSql, xCallback, pArg, ref pzErrMsg ); }
public extern static int sqlite3_exec(IntPtr db, IntPtr sql, sqlite3_callback cb, IntPtr callBackParam, ref IntPtr errMsg);