Example #1
0
        /// <summary>
        /// Executes the supplied query and calls the callback function for each row of result
        /// </summary>
        /// <remarks>
        /// <p>
        /// If the database is busy (ie with another process/thread using it) then
        /// this method will call Thread.Sleep(), and then retry the query. Number of
        /// retries and retry delay are configurable using the appropriate properties.</p>
        /// <p>The result set object may be empty if there are no results, or if the
        /// query does not return results (eg. UPDATE, INSERT, DELETE etc)</p>
        /// </remarks>
        /// <param name="query">The SQL query to execute</param>
        /// <param name="callback">The callback function to call
        /// (object Param, string[] ColumnNames, ArrayList Data)</param>
        /// <param name="Param">A object to pass to the callback function</param>
        /// <exception cref="SQLiteException">
        /// Thrown if an error occurs or if the database is busy and the retries
        /// are exhausted.
        /// </exception>
        public unsafe void Execute(string query, ResultCallBack callback, object Param)
        {
            column_names = null; //reset for each new query
            param        = Param;
            callbackfunc = callback;

            ResultCode errorCode;
            string     errorMsg;
            int        retries = 0;

            using (SqliteString sql = new SqliteString(query))
            {
                while ((errorCode = SQLiteClient.sqlite3_exec(
                            this.dbHandle,
                            sql.ToPointer(),
                            (callbackfunc == null) ? null : new SQLiteCallback(CallBack),
                            IntPtr.Zero, out errorMsg))
                       == ResultCode.BUSY && retries < this.busyRetries)
                {
                    Thread.Sleep(this.busyRetryDelay);
                    ++retries;
                    continue;
                }

                if (errorCode != ResultCode.OK)
                {
                    throw new SQLiteException(SQLiteClient.GetMessageForError(errorCode) + ":\n"
                                              + errorMsg + "\n the query string is :\n" + query, errorCode);
                }
            }
        }
        public async void Query(string database, string sql, ResultCallBack resultCallBack)
        {
            List <Serie> series = await _client.QueryAsync(database, sql);

            string result = Newtonsoft.Json.JsonConvert.SerializeObject(series);

            resultCallBack?.Invoke(result);
        }
        public async void GetDatabases(ResultCallBack resultCallBack)
        {
            List <Database> databases = await _client.ShowDatabasesAsync();

            string result = Newtonsoft.Json.JsonConvert.SerializeObject(databases);

            resultCallBack?.Invoke(result);
        }
Example #4
0
        private ResultCallBack resultcallback; //实例化回调方法

        #endregion Fields

        #region Constructors

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="info">邮件信息</param>
        /// <param name="reinfo">邮件记录</param>
        /// <param name="resultcallback">回调函数</param>
        public AsynEmail(EmailInfo info,EmailRecordInfo reinfo,ResultCallBack resultcallback)
        {
            this.Info = info;
            this.resultcallback = resultcallback;
            this.ReInfo = reinfo;
        }
Example #5
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="info">邮件信息</param>
 /// <param name="reinfo">邮件记录</param>
 /// <param name="resultcallback">回调函数</param>
 public AsynEmail(EmailInfo info, EmailRecordInfo reinfo, ResultCallBack resultcallback)
 {
     this.Info           = info;
     this.resultcallback = resultcallback;
     this.ReInfo         = reinfo;
 }
Example #6
0
 public void setCallBack(byte resultType, ResultCallBack callback)
 {
     callbacks[resultType] = callback;
 }