⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fastdbcli.cs

📁 嵌入式数据库软件 嵌入式数据库软件 嵌入式数据库软件
💻 CS
📖 第 1 页 / 共 4 页
字号:
using System;using System.Text;using System.Runtime.InteropServices;namespace FastDbNet{  /// <summary>  /// Exception thrown by Gigabase/FastDB CLI implementation.  /// </summary>  public class CliError : Exception {    public int ErrorCode;    ///<summary>    /// Constructor of the exception object.    /// </summary>    /// <param name="Msg">message describing the reason of the fault</param>    public CliError(string Msg) : this((int)CLI.ErrorCode.cli_unknown_error, Msg) {}    ///<summary>    /// Constructor of the exception object.    /// </summary>    /// <param name="Code">Error code describing the reason of the fault</param>    public CliError(int Code)   : this(Code, "") {}    ///<summary>    /// Constructor of the exception object.    /// </summary>    /// <param name="Code">Error code describing the reason of the fault</param>    /// <param name="Msg">Message describing the reason of the fault</param>    public CliError(int Code, string Msg): base(FormatMessage(Code, Msg)) {      ErrorCode = Code;    }    private static string FormatMessage(int Code, string Msg) {      if (Msg != "")         Msg += ". " + CLI.CliErrorToStr(Code);      else        Msg = CLI.CliErrorToStr(Code);      return Msg;    }  }  /// <summary>  /// FastDb CLI interface.  /// </summary>  public class CLI {#if GIGABASE#if LINUX		public const string libname = "libgigabase_r.so";#else	  public const string libname = "GigaBase.dll";#endif#else#if LINUX		public const string libname = "libfastdb_r.so";#else    public const string libname = "FastDB.dll";#endif#endif    //-----------------------------------------    // cli_result_code    //-----------------------------------------    public enum ErrorCode : int {      cli_ok                         =  0,      cli_bad_address                = -1,      cli_connection_refused         = -2,      cli_database_not_found         = -3,      cli_bad_statement              = -4,      cli_parameter_not_found        = -5,      cli_unbound_parameter          = -6,      cli_column_not_found           = -7,      cli_incompatible_type          = -8,      cli_network_error              = -9,      cli_runtime_error              = -10,      cli_bad_descriptor             = -11,      cli_unsupported_type           = -12,      cli_not_found                  = -13,      cli_not_update_mode            = -14,      cli_table_not_found            = -15,      cli_not_all_columns_specified  = -16,      cli_not_fetched                = -17,      cli_already_updated            = -18,      cli_table_already_exists       = -19,      cli_not_implemented            = -20,#if GIGABASE  		cli_login_failed               = -21,	  	cli_empty_parameter            = -22,		  cli_closed_connection          = -23#endif      //-----------------------------------------      // cli_error_class      // Note: When calling CliErrorToStr in TCliErrorHandler subtract 100 from the      //       code passed as ErrorClassCode in order to get correct description      //-----------------------------------------      cli_query_error                = 1  -100,      cli_arithmetic_error           = 2  -100,      cli_index_out_of_range_error   = 3  -100,      cli_database_open_error        = 4  -100,      cli_file_error                 = 5  -100,      cli_out_of_memory_error        = 6  -100,      cli_deadlock                   = 7  -100,      cli_null_reference_error       = 8  -100,      cli_lock_revoked               = 9  -100,      cli_file_limit_exeeded         = 10 -100,      //-----------------------------------------      // Extended Error Codes      //-----------------------------------------      cli_error_loading_library      = -200,      cli_session_not_assigned       = -201,      cli_database_already_open      = -202,      cli_invalid_field_size         = -203,      cli_empty_query                = -204,      cli_item_already_defined       = -205,      cli_wrong_inverse_reference    = -206,      cli_no_fields_defined          = -207,      cli_access_violation           = -208,      cli_unknown_error              = -999    }    //-----------------------------------------    // Field Types    //-----------------------------------------    public enum FieldType : int {      cli_oid                        = 0,      cli_bool                       = 1,      cli_int1                       = 2,      cli_int2                       = 3,      cli_int4                       = 4,      cli_int8                       = 5,      cli_real4                      = 6,      cli_real8                      = 7,      cli_decimal                    = 8,  //{ not supported in FastDB }      cli_asciiz                     = 9,  //{ zero terminated string (Get/Set function can be used) }      cli_pasciiz                    = 10, //{ pointer to zero terminated string }      cli_cstring                    = 11, //{ not supported in FastDB }      cli_array_of_oid               = 12,      cli_array_of_bool              = 13,      cli_array_of_int1              = 14,      cli_array_of_int2              = 15,      cli_array_of_int4              = 16,      cli_array_of_int8              = 17,      cli_array_of_real4             = 18,      cli_array_of_real8             = 19,      cli_array_of_decimal           = 20, //{ not supported in FastDB }      cli_array_of_string            = 21,      cli_any                        = 22, //{ not supported in FastDB }      cli_datetime                   = 23, //{ not supported in FastDB }      cli_autoincrement              = 24,      cli_rectangle                  = 25, //{ not supported in FastDB }      cli_unknown                    = 26,      //--- Custom types not supported by the database directly -----      cli_subst                            // Reserved for substitution variables    };    internal static int[] SizeOfCliType =      new int[] {                  Marshal.SizeOf(typeof(int)),          // cli_oid                  Marshal.SizeOf(typeof(bool)),					// cli_bool                  Marshal.SizeOf(typeof(sbyte)),				// cli_int1                  Marshal.SizeOf(typeof(short)),				// cli_int2                  Marshal.SizeOf(typeof(int)),	        // cli_int4                  Marshal.SizeOf(typeof(long)),					// cli_int8_t                  Marshal.SizeOf(typeof(float)),  			// cli_real4_t                  Marshal.SizeOf(typeof(double)),				// cli_real8_t                  0, // cli_decimal                  0, // cli_asciiz,                  0, // cli_pasciiz,                  0, // cli_cstring,                  0, // cli_array_of_oid,                  0, // cli_array_of_bool,                  0, // cli_array_of_int1,                  0, // cli_array_of_int2,                  0, // cli_array_of_int4,                  0, // cli_array_of_int8,                  0, // cli_array_of_real4,                  0, // cli_array_of_real8,                  0, // cli_array_of_decimal,                  0, // cli_array_of_string,                  0, // cli_any,                  Marshal.SizeOf(typeof(double)),         // cli_datetime,                  Marshal.SizeOf(typeof(int)),          // cli_autoincrement,                  0, // cli_rectangle,                  0, // cli_unknown                  0  // ctSubst                };    public static string CliTypeToStr(FieldType type, bool ExtendedSyntax) {      StringBuilder s = new StringBuilder("");      FieldType ft = type;      if (ExtendedSyntax && type >= CLI.FieldType.cli_array_of_oid && type <= CLI.FieldType.cli_array_of_string) {        s.Append("array of ");        ft = (CLI.FieldType)((int)type - (int)CLI.FieldType.cli_array_of_oid);      }      switch(ft) {        case CLI.FieldType.cli_oid:          s.Append((ExtendedSyntax)? "reference" : "(oid)"); break;        case CLI.FieldType.cli_bool:          s.Append((ExtendedSyntax)? "bool" : "Boolean"); break;        case CLI.FieldType.cli_int1:          s.Append((ExtendedSyntax)? "int1" : "Byte"); break;        case CLI.FieldType.cli_int2:          s.Append((ExtendedSyntax)? "int2" : "SmallInt"); break;        case CLI.FieldType.cli_autoincrement:        case CLI.FieldType.cli_int4:          s.Append((ExtendedSyntax)? "int4" : "Integer"); break;        case CLI.FieldType.cli_int8:          s.Append((ExtendedSyntax)? "int8" : "Int64"); break;        case CLI.FieldType.cli_real4:          s.Append((ExtendedSyntax)? "real4" : "Single"); break;        case CLI.FieldType.cli_datetime:          s.Append((ExtendedSyntax)? "real8" : "DateTime"); break;        case CLI.FieldType.cli_real8:          s.Append((ExtendedSyntax)? "real8" : "Double"); break;        case CLI.FieldType.cli_asciiz:        case CLI.FieldType.cli_pasciiz:          s.Append((ExtendedSyntax)? "string" : "String"); break;        default:          if (!ExtendedSyntax)             s.Append(Enum.GetName(typeof(CLI.FieldType), ft).Substring(4)); break;      }      return s.ToString();    }    public static bool IsArrayType(FieldType tp) {       return tp >= FieldType.cli_array_of_oid && tp <= FieldType.cli_array_of_real8;     }    public static int CliCheck(int code, string Msg) {      if (code < 0)        throw new CliError(code, Msg);      else        return code;    }    public static int CliCheck(int code) {      return CliCheck(code, "");    }    // translate error code to string    public static string CliErrorToStr(int Code) {      if (Code >= 0)        return null;      else        switch (Code) {          case (int)ErrorCode.cli_bad_address                : return "Invalid format of server URL";          case (int)ErrorCode.cli_connection_refused         : return "Connection with server could not be established";          case (int)ErrorCode.cli_database_not_found         : return "Database cannot be found";          case (int)ErrorCode.cli_bad_statement              : return "Text of SQL statement is not correct";          case (int)ErrorCode.cli_parameter_not_found        : return "Parameter was not found in statement";          case (int)ErrorCode.cli_unbound_parameter          : return "Parameter was not specified";          case (int)ErrorCode.cli_column_not_found           : return "No such colunm in the table";          case (int)ErrorCode.cli_incompatible_type          : return "Conversion between application and database type is not possible";          case (int)ErrorCode.cli_network_error              : return "Connection with server is broken";          case (int)ErrorCode.cli_runtime_error              : return "Error during query execution";          case (int)ErrorCode.cli_bad_descriptor             : return "Invalid statement/session description";          case (int)ErrorCode.cli_unsupported_type           : return "Unsupported type for parameter or column";          case (int)ErrorCode.cli_not_found                  : return "Record was not found";          case (int)ErrorCode.cli_not_update_mode            : return "Attempt to update records selected by view only cursor";          case (int)ErrorCode.cli_table_not_found            : return "There is no table with specified name in the database";          case (int)ErrorCode.cli_not_all_columns_specified  : return "Insert statement doesn''t specify values for all table columns";          case (int)ErrorCode.cli_not_fetched                : return "cli_fetch method was not called";          case (int)ErrorCode.cli_already_updated            : return "cli_update method was invoked more than once for the same record";          case (int)ErrorCode.cli_table_already_exists       : return "Attempt to create existing table";          case (int)ErrorCode.cli_not_implemented            : return "Function is not implemented";            //----- Severe Error Class Codes---------          case (int)ErrorCode.cli_query_error                : return "Query error";          case (int)ErrorCode.cli_arithmetic_error           : return "Arithmetic error";          case (int)ErrorCode.cli_index_out_of_range_error   : return "Index out of range";          case (int)ErrorCode.cli_database_open_error        : return "Database open error";          case (int)ErrorCode.cli_file_error                 : return "File error";          case (int)ErrorCode.cli_out_of_memory_error        : return "Out of memory";          case (int)ErrorCode.cli_deadlock                   : return "Deadlock detected";          case (int)ErrorCode.cli_null_reference_error       : return "Null reference";          case (int)ErrorCode.cli_lock_revoked               : return "Lock revoked";          case (int)ErrorCode.cli_file_limit_exeeded         : return "File limit exeeded";            //----- Custom Error Codes---------------          case (int)ErrorCode.cli_error_loading_library      : return "Error loading library";          case (int)ErrorCode.cli_session_not_assigned       : return "Session not assigned or not connected";          case (int)ErrorCode.cli_database_already_open      : return "Database already open";          case (int)ErrorCode.cli_invalid_field_size         : return "Invalid field size";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -