public static AirPortList GetDefaultAirPortList() { AirPortList myAirPortList = new AirPortList(); Config cfg = new Config(); OdbcConnection cn = new OdbcConnection(); cn.ConnectionString = cfg.ConnectionString; OdbcCommand cm = cn.CreateCommand(); cm.CommandType = CommandType.StoredProcedure; cm.CommandText = "SelectAirPortList"; try { cn.Open(); OdbcDataReader dr = cm.ExecuteReader(); while (dr.Read()) { AirPort air = new AirPort(); air.AirPortID = (int)dr["airP_id"]; air.AirPortName = dr["airP_name"].ToString(); air.AirPortCityName = dr["city_name"].ToString(); air.AirPortCountryName = dr["cntr_name"].ToString(); myAirPortList.Add(air); } } catch (OdbcException ex) { e = ex; } return(myAirPortList); }
//错误处理 public override ErrorTypes ErrorHandler(Exception e, out string message) { message = ""; if (e is OdbcException) { OdbcException sqlErr = (OdbcException)e; int j = 0; for (j = 0; j < sqlErr.Errors.Count; j++) { if (sqlErr.Errors[j].NativeError != 3621) { break; } } switch (sqlErr.Errors[j].NativeError) { case 2627: message = "数据重复!"; return(ErrorTypes.NotUnique); case 8152: return(ErrorTypes.DataTooLong); case 515: message = "参考:" + sqlErr.Message; return(ErrorTypes.NotAllowDataNull); case 0: return(ErrorTypes.DataTypeNotMatch); case 544: message = "参考:" + sqlErr.Message; return(ErrorTypes.AutoValueOn); case 547: message = "参考:" + sqlErr.Message; return(ErrorTypes.RestrictError); case 8178: message = "参考:" + sqlErr.Message; return(ErrorTypes.RequireAttribute); } message = "数据库操作异常:"; for (int i = 0; i < sqlErr.Errors.Count; i++) { message += "Index #" + i + "\n" + "Message: " + sqlErr.Message + "\n" + "Native: " + sqlErr.Errors[i].NativeError.ToString() + "\n" + "Source: " + sqlErr.Errors[i].Source + "\n"; } return(ErrorTypes.DatabaseUnknwnError); } else { message = ""; return(ErrorTypes.Unknown); } }
// <Snippet1> public void DisplayOdbcErrors(OdbcException exception) { for (int i = 0; i < exception.Errors.Count; i++) { Console.WriteLine("Index #" + i + "\n" + "Error: " + exception.Errors[i].ToString() + "\n"); } Console.ReadLine(); }
private void handleException(OdbcException MyOdbcException) { for (int i = 0; i < MyOdbcException.Errors.Count; i++) { Console.Write("SQL ERROR #" + i + "\n" + "Message: " + MyOdbcException.Errors[i].Message + "\n" + "Native: " + MyOdbcException.Errors[i].NativeError.ToString() + "\n" + "Source: " + MyOdbcException.Errors[i].Source + "\n" + "SQL: " + MyOdbcException.Errors[i].SQLState + "\n"); } }
// <Snippet1> public void DisplayOdbcErrorCollection(OdbcException exception) { for (int i = 0; i < exception.Errors.Count; i++) { MessageBox.Show("Index #" + i + "\n" + "Message: " + exception.Errors[i].Message + "\n" + "Native: " + exception.Errors[i].NativeError.ToString() + "\n" + "Source: " + exception.Errors[i].Source + "\n" + "SQL: " + exception.Errors[i].SQLState + "\n"); } }
// <Snippet1> public void DisplayOdbcErrorCollection(OdbcException exception) { for (int i = 0; i < exception.Errors.Count; i++) { Console.WriteLine("Index #" + i + "\n" + "Message: " + exception.Errors[i].Message + "\n" + "Native: " + exception.Errors[i].NativeError.ToString() + "\n" + "Source: " + exception.Errors[i].Source + "\n" + "SQL: " + exception.Errors[i].SQLState + "\n"); } Console.ReadLine(); }
/// <summary> /// Logs ODBC Exceptions in a text file /// </summary> /// <param name="odbcException">The ODBC exception that has to be logged</param> /// <param name="query">The location of the logfile (including filename)</param> public static void LogOdbcException(OdbcException odbcException, string query) { StreamWriter logger = new StreamWriter("DBFaults.txt", true); //Open the file and get ready to append the error-info to the file. logger.WriteLine(odbcException.Message); logger.WriteLine(odbcException.Errors[0].Message); logger.WriteLine(odbcException.Errors[0].NativeError); logger.WriteLine(odbcException.Errors[0].SQLState); logger.WriteLine(query); logger.WriteLine(DateTime.Now); //Put a timestamp so we know when the error happened logger.WriteLine("----------++++++++++----------"); //Make it clear this is the end of the error. logger.Flush(); logger.Close(); }
// // WriteToEventLog // A helper function that writes exception detail to the event log. Exceptions // are written to the event log as a security measure to avoid private database // details from being returned to the browser. If a method does not return a status // or boolean indicating the action succeeded or failed, a generic exception is also // thrown by the caller. // private void WriteToEventLog(OdbcException e, string action) { EventLog log = new EventLog(); log.Source = eventSource; log.Log = eventLog; string message = exceptionMessage + "\n\n"; message += "Action: " + action + "\n\n"; message += "Exception: " + e.ToString(); log.WriteEntry(message); }
private string ParseOdbcErrorCollection(OdbcException exception) { StringBuilder error = new StringBuilder(); for (int i = 0; i < exception.Errors.Count; i++) { error.Append("Index #" + i + "\n" + "Message: " + exception.Errors[i].Message + "\n" + "Native: " + exception.Errors[i].NativeError.ToString() + "\n" + "Source: " + exception.Errors[i].Source + "\n" + "SQL: " + exception.Errors[i].SQLState + "\n"); } return(error.ToString()); }
protected override bool IsDuplicateKeyException(System.Exception ex) { if (ex is OdbcException) { OdbcException sqliteOdbcException = (OdbcException)ex; //if(sqliteOdbcException.ErrorCode = SQLiteErrorCode.Constraint && // sqliteException.Message != null && // sqliteException.Message.Contains("must be unique")) { // return true; //} } return(false); }
public static string GetOdbcError(OdbcException e) { string errorMessages = ""; for (int i = 0; i < e.Errors.Count; i++) { errorMessages += "Index #" + i + "\n" + "Message: " + e.Errors[i].Message + "\n" + "NativeError: " + e.Errors[i].NativeError.ToString() + "\n" + "Source: " + e.Errors[i].Source + "\n" + "SQL: " + e.Errors[i].SQLState + "\n"; } return(errorMessages); }
/// <summary> /// 错误处理 /// </summary> /// <param name="e">异常</param> /// <param name="message">消息</param> /// <returns></returns> public override ErrorTypes ErrorHandler(Exception e, out string message) { message = ""; if (e is OdbcException) { OdbcException sqlErr = (OdbcException)e; // int j = 0; // for (j = 0;j < sqlErr.Errors.Count ;j++) // { // if (sqlErr.Errors[j].Number != 3621) break; // } // switch (sqlErr.Errors[j].Number) // { // case 2627: // message = "数据重复!"; // return ErrorTypes.NotUnique; // case 8152: // return ErrorTypes.DataTooLong; // case 515: // message = "参考:" + sqlErr.Message; // return ErrorTypes.NotAllowDataNull; // case 0: // return ErrorTypes.DataTypeNotMatch; // case 544: // message = "参考:" + sqlErr.Message; // return ErrorTypes.AutoValueOn; // case 547: // message = "参考:" + sqlErr.Message; // return ErrorTypes.RestrictError; // // } // message = "数据库操作异常:"; // for(int i =0; i <sqlErr.Errors.Count;i++) // { // message += "Index #" + i + "\n" + // "Message: " + sqlErr.Message + "\n" + // "Native: " + sqlErr.Errors[i].Number.ToString() + "\n" + // "Source: " + sqlErr.Errors[i].Source + "\n" ; // } return(ErrorTypes.DatabaseUnknownError); } else { message = ""; return(ErrorTypes.Unknown); } }
public override object Convert(object value, ConvertType convertType) { switch (convertType) { case ConvertType.ExceptionToErrorNumber: if (value is OdbcException) { OdbcException ex = (OdbcException)value; if (ex.Errors.Count > 0) { return(ex.Errors[0].NativeError); } } break; } return(base.Convert(value, convertType)); }
//Generic ODBC Exception used in all try/exception where needs show the error messages. public string catchODBCException(OdbcException o, string Level) { string tmsg = ""; switch (Level) { case "Basic": { tmsg = "We are sorry, we are experiencing technical problems ...<br/><br/>"; tmsg += "<hr/>"; tmsg += "<br/>Message: " + o.Message; tmsg += "<br/>Others: " + o.InnerException; tmsg += "<hr/>"; tmsg += "<br/><br/>Try again! If the problem persist, contact techinical suport"; break; } case "Fully": { tmsg = "We are sorry, we are experiencing technical problems ..."; tmsg += "<hr/>"; tmsg += "<br/>Message: " + o.Message; tmsg += "<br/>Source: " + o.Source; tmsg += "<br/>Stack Trace: " + o.StackTrace; tmsg += "<br/>Target Site: " + o.TargetSite.Name; tmsg += "<br/>Others: " + o.InnerException; tmsg += "<hr/>"; tmsg += "<br/>Try again! If the problem persist, contact techinical suport"; break; } default: break; } return(tmsg); }
private string GetADONETError(OdbcException ex) { //string sQuery; long lNativeError = 0; string sErrorDesc = ""; if (ex.Errors.Count == 0) { return(sErrorDesc); } foreach (OdbcError oErr in ex.Errors) { sErrorDesc = oErr.Message; if (sErrorDesc.EndsWith("Transaction rollback")) { lNativeError = oErr.NativeError; break; } } DbSelectStatement clause = CreateSelectClause(); if ((lNativeError >= 10000) && (lNativeError < 20000)) // 'Error { sErrorDesc = "Error: " + lNativeError.ToString() + " "; lNativeError = lNativeError - 10000; clause .SelectColumn("ImportErrors", "Description") .From("ImportErrors") .Criteria .IsEqual("ImportErrors", "ImportErrorID", (int)lNativeError); //sQuery = "Select Description from ImportErrors where ImportErrorID = " + lNativeError.ToString(); } else if ((lNativeError >= 1) && (lNativeError < 10000)) // 'Warning { clause .SelectColumn("ImportWarnings", "Description") .From("ImportWarnings") .Criteria .IsEqual("ImportWarnings", "ImportWarningID", (int)lNativeError); //sQuery = "Select Description from ImportWarnings where ImportWarningID = " + lNativeError.ToString(); sErrorDesc = "Warning: " + lNativeError.ToString() + " "; } else if (lNativeError >= 20000) { clause .SelectColumn("InternalODBCErrors", "Description") .From("InternalODBCErrors") .Criteria .IsEqual("InternalODBCErrors", "NativeErrorNumber", (int)lNativeError); //sQuery = "Select Description from InternalODBCErrors where NativeErrorNumber = " + lNativeError.ToString(); sErrorDesc = lNativeError.ToString() + " "; } else { // return first error in the list foreach (OdbcError oErr in ex.Errors) { sErrorDesc = oErr.Message; break; } return(sErrorDesc); } DbDataAdapter adapter = CreateDbDataAdapter(clause); DataSet ADORecordset = new DataSet(); adapter.Fill(ADORecordset, "ImportWarnings"); foreach (DataRow drow in ADORecordset.Tables["ImportWarnings"].Rows) { sErrorDesc += drow["Description"]; } return(sErrorDesc); }
public bool ExportToTxt() { bool flag; try { string str = string.Concat("SELECT COUNT(*) from ", this.TableName); System.Data.Odbc.OdbcCommand sqlCommand = new System.Data.Odbc.OdbcCommand(str, this.conn); OdbcDataReader sqlDataReader = sqlCommand.ExecuteReader(); sqlDataReader.Read(); int num = Convert.ToInt32(sqlDataReader[0].ToString()); string str1 = sqlDataReader[0].ToString(); sqlDataReader.Close(); if (!(this.SqlCommand != "")) { sqlCommand.CommandText = string.Concat("SELECT * from ", this.TableName); } else { sqlCommand.CommandText = this.SqlCommand; } sqlDataReader = sqlCommand.ExecuteReader(); int fieldCount = sqlDataReader.FieldCount; decimal num1 = new decimal(0); StreamWriter streamWriter = new StreamWriter(string.Concat(this.filename, ".Txt")); StringBuilder stringBuilder = new StringBuilder(); while (sqlDataReader.Read()) { decimal num2 = num1; num1 = num2++; this.updateDisplay(num2, num, str1); for (int i = 0; i < fieldCount; i++) { if (!(sqlDataReader[i].GetType().ToString() == "System.Byte[]")) { stringBuilder.Append(sqlDataReader[i].ToString()); } else { byte[] item = (byte[])sqlDataReader[i]; stringBuilder.Append(DataWriter2.BytesToHex(item)); } if ((i >= fieldCount - 1 ? false : i >= 0)) { stringBuilder.Append("|"); } } stringBuilder.Replace(Environment.NewLine, string.Empty); streamWriter.WriteLine(stringBuilder.ToString()); stringBuilder.Length = 0; } streamWriter.Close(); streamWriter.Dispose(); stringBuilder = null; sqlCommand.Dispose(); sqlDataReader.Dispose(); flag = true; } catch (OdbcException odbcException1) { OdbcException odbcException = odbcException1; this.SimpleError = "OdbcError"; this.Error = odbcException.Message; flag = false; } catch (IOException oException1) { IOException oException = oException1; this.SimpleError = "FileError"; this.Error = oException.Message; flag = false; } catch (UnauthorizedAccessException unauthorizedAccessException1) { UnauthorizedAccessException unauthorizedAccessException = unauthorizedAccessException1; this.SimpleError = "PermissionsError"; this.Error = unauthorizedAccessException.Message; flag = false; } return(flag); }
private string GetADONETError(OdbcException ex) { string sQuery; long lNativeError = 0; string sErrorDesc = ""; if (ex.Errors.Count == 0) { return(sErrorDesc); } foreach (OdbcError oErr in ex.Errors) { sErrorDesc = oErr.Message; if (sErrorDesc.EndsWith("Transaction rollback")) { lNativeError = oErr.NativeError; break; } } if ((lNativeError >= 10000) && (lNativeError < 20000)) // 'Error { sErrorDesc = "Error: " + lNativeError.ToString() + " "; lNativeError = lNativeError - 10000; sQuery = "Select Description from ImportErrors where ImportErrorID = " + lNativeError.ToString(); } else if ((lNativeError >= 1) && (lNativeError < 10000)) // 'Warning { sQuery = "Select Description from ImportWarnings where ImportWarningID = " + lNativeError.ToString(); sErrorDesc = "Warning: " + lNativeError.ToString() + " "; } else if (lNativeError >= 20000) { sQuery = "Select Description from InternalODBCErrors where NativeErrorNumber = " + lNativeError.ToString(); sErrorDesc = lNativeError.ToString() + " "; } else { // return first error in the list foreach (OdbcError oErr in ex.Errors) { sErrorDesc = oErr.Message; break; } return(sErrorDesc); } /* * OdbcDataAdapter adapter = new OdbcDataAdapter(sQuery, DbManager.Instance.MyobConnection); * DataSet ADORecordset = new DataSet(); * adapter.Fill(ADORecordset, "ImportWarnings"); * * foreach (DataRow drow in ADORecordset.Tables["ImportWarnings"].Rows) * { * sErrorDesc += drow["Description"]; * } */ return(sErrorDesc); }