System.Data.SQLite.Sqlite3.sqlite3_get_table C# (CSharp) Method

sqlite3_get_table() static public method

static public sqlite3_get_table ( sqlite3 db, string zSql, Array &pazResult, int &pnRow, int &pnColumn, string &pzErrMsg ) : int
db sqlite3
zSql string
pazResult Array
pnRow int
pnColumn int
pzErrMsg string
return int
static public int sqlite3_get_table(
sqlite3 db,               /* The database on which the SQL executes */
string zSql,              /* The SQL to be executed */
ref string[] pazResult,   /* Write the result table here */
ref int pnRow,            /* Write the number of rows in the result here */
ref int pnColumn,         /* Write the number of columns of result here */
ref string pzErrMsg       /* Write error messages here */
){
int rc;
TabResult res = new TabResult();

pazResult = null;
pnColumn = 0;
pnRow = 0;
pzErrMsg = "";
res.zErrMsg = "";
res.nResult = 0;
res.nRow = 0;
res.nColumn = 0;
res.nData = 1;
res.nAlloc = 20;
res.rc = SQLITE_OK;
res.azResult = new string[res.nAlloc];// sqlite3_malloc( sizeof( char* ) * res.nAlloc );
if( res.azResult==null ){
db.errCode = SQLITE_NOMEM;
return SQLITE_NOMEM;
}
res.azResult[0] = null;
rc = sqlite3_exec(db, zSql, (dxCallback) sqlite3_get_table_cb, res, ref pzErrMsg);
//Debug.Assert( sizeof(res.azResult[0])>= sizeof(res.nData) );
//res.azResult = SQLITE_INT_TO_PTR( res.nData );
if( (rc&0xff)==SQLITE_ABORT ){
//sqlite3_free_table(ref res.azResult[1] );
if( res.zErrMsg !=""){
if( pzErrMsg !=null ){
//sqlite3_free(ref pzErrMsg);
pzErrMsg = sqlite3_mprintf("%s",res.zErrMsg);
}
//sqlite3_free(ref res.zErrMsg);
}
db.errCode = res.rc;  /* Assume 32-bit assignment is atomic */
return res.rc;
}
//sqlite3_free(ref res.zErrMsg);
if( rc!=SQLITE_OK ){
//sqlite3_free_table(ref res.azResult[1]);
return rc;
}
if( res.nAlloc>res.nData ){
string[] azNew;
Array.Resize(ref res.azResult, res.nData-1);//sqlite3_realloc( res.azResult, sizeof(char*)*(res.nData+1) );
//if( azNew==null ){
//  //sqlite3_free_table(ref res.azResult[1]);
//  db.errCode = SQLITE_NOMEM;
//  return SQLITE_NOMEM;
//}
res.nAlloc = res.nData+1;
//res.azResult = azNew;
}
pazResult = res.azResult;
pnColumn = res.nColumn;
pnRow = res.nRow;
return rc;
}