2015-06-10 52 views
1

嗨朋友我有一個控制檯應用程序,它從Access數據庫更新三個表中讀取數據,我使用名爲automate 9.0的軟件自動執行此操作我需要知道如果exe失敗,爲什麼失敗,所以我跟蹤一些枚舉值,我認爲這是我的主要方法導致錯誤。不包含適用於入口點的靜態主要方法(但我已將它配置正確)

namespace accessmovingtest 
    { 
    enum ExitCode : int 
     { 
     Success = 0, 
     SqlError = 1, 
     CannotFindFileAccessDB = 2, 
     ConnectionRelatedError = 3 
     } 
    class Program 
    { 
     public static ExitCode Main(string[] args) 
     { 
      ExitCode RetVal; 
      string accdbConnStr = ConfigurationManager.ConnectionStrings["AccessDBtoSql.Properties.Settings.Company_Master_DataConnectionString"].ToString(); 
    var con = new OdbcConnection(accdbConnStr); 
    try 
     { 
     con.Open(); 
     con.Close(); 
     } 
     catch(Exception ex) 
     { 
      Console.Out.WriteLine(ex.StackTrace); 
      Console.Out.WriteLine(ex.Message); 
      Console.Out.WriteLine(ex.TargetSite); 
      Console.WriteLine("Cannot Establish a connection to the access database"); 
       RetVal = ExitCode.ConnectionRelatedError; 
       return RetVal; 
      } 

      try 
      { 
       string accdbConnStrr = ConfigurationManager.ConnectionStrings["AccessDBtoSql.Properties.Settings.Company_Master_DataConnectionString"].ToString(); 
       if (!File.Exists(accdbConnStrr)) 
       { 
        Console.WriteLine("AccessDb Found"); 
       } 
      } 
      catch (FileNotFoundException ex) 
      { 

       Console.Out.WriteLine(ex.StackTrace); 
       Console.Out.WriteLine(ex.Message); 
       Console.WriteLine("Cannot Find Access Data"); 
       RetVal = ExitCode.CannotFindFileAccessDB; 
       return RetVal; 

      } 
      catch (Exception ex) 
      { 
       Console.Out.WriteLine(ex.Message); 
      } 

      try 
      { 
       accesstosqlitemmaster(); 


      } 
      catch (Exception ex) 
      { 
       Console.Out.WriteLine(ex.StackTrace); 
       Console.Out.WriteLine(ex.Message); 
       RetVal = ExitCode.SqlError; 
       return RetVal; 


      } 
      try 
      { 
       accesstosqlpiecedimensionmasterdata(); 

      } 
      catch (Exception ex) 
      { 
       Console.Out.WriteLine(ex.StackTrace); 
       Console.Out.WriteLine(ex.Message); 
       RetVal = ExitCode.SqlError; 
       return RetVal; 

      } 
      try 
      { 
       accesstosqlitemdeslookups(); 


      } 
      catch (Exception ex) 
      { 
       Console.Out.WriteLine(ex.StackTrace); 
       Console.Out.WriteLine(ex.Message); 
       RetVal = ExitCode.SqlError; 
       return RetVal; 
      } 
      RetVal = ExitCode.Success; 
      return RetVal; 


     } 

獲取錯誤上的ExitCode旁邊的主要方法

回答

2

按照C#5.0語言規範,§3.1,當執行環境調用發生

應用程序啓動 指定的方法,它被稱爲應用程序的條目 點。此入口點方法總是被命名爲Main,可以有一個 以下簽名:

static void Main() {...}

static void Main(string[] args) {...}

static int Main() {...}

static int Main(string[] args) {...}

你是返回一個枚舉爲你的主要方法,而不是int的底層的枚舉w應該滿足規範。

public static int Main(string[] args) 
{ 
    ExitCode RetVal; 
    ... 
    ... 
    RetVal = ExitCode.Success; 
    return (int)RetVal; 
相關問題