Ejemplo n.º 1
0
        /// <summary>
        /// Relay the returned result from sqlite3 callback to the callback func specified
        /// when Execute() is called
        /// </summary>
        /// <param name="pArg">Not used</param>
        /// <param name="argc">Number of columns in argv</param>
        /// <param name="argv">The column data in this row</param>
        /// <param name="columnNames">The column names</param>
        internal unsafe int CallBack(IntPtr pArg, int argc, sbyte **argv, sbyte **columnNames)
        {
            List <string> ar = new List <string>(argc);

            // First time in? Add column names
            if (this.column_names == null)
            {
                for (int i = 0; i < argc; ++i)
                {
                    ar.Add(SqliteString.PointerToString(columnNames[i]));
                }
            }
            column_names = ar.ToArray();

            // Go through this rows data

            ar.Clear();

            for (int i = 0; i < argc; ++i)
            {
                if (argv[i] == ((sbyte *)0))
                {
                    ar.Add(null);
                }
                //ar[i] = null;
                else
                {
                    ar.Add(SqliteString.PointerToString(argv[i]));
                }
                //ar[i] = SqliteString.PointerToString(argv[i]);
            }

            return(callbackfunc(param, column_names, ar.ToArray()));
        }