2013-06-19 55 views
1

是否可以在C#Windows控制檯應用程序中使用SQL Server Compact數據庫(與基於WebMatrix的網站使用相同類型的數據庫)?控制檯應用程序中的SQL Server CE數據庫

我真的很生氣的XML(和JSON)文件,並不真正喜歡其他數據庫解決方案(因爲它只是一個簡單的項目真的很多)。

我花了幾個小時尋找,但我可以找到的所有引用網站的東西(這顯然是不相關的)。

+2

爲什麼不是 - 你需要知道什麼? –

+1

我在這裏沒有看到任何問題。只需打開連接,執行命令並像平常一樣關閉。 – Steve

+0

我確實嘗試過,但它似乎不是爲我的控制檯應用程序添加數據庫_anywhere_的選項。我沒有提到這一點,因爲我只是假設你不能(因爲我和控制檯應用程序有任何關係,這已經很長時間了)。 –

回答

1

這是一個簡單的控制檯應用程序,可能會讓你開始。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Oracle.DataAccess.Client; 
using System.IO; 


namespace execsql 
{ 
    /// <summary> 
    /// Simple Sql Executor for use in Batch files. 
    /// ExitCode = 0 on success 
    /// </summary> 
    class Program 
    { 
     private static string _sql; 

     static void Main(string[] args) 
     { 
      try 
      { 
       if (CheckArgs(args)) 
       { 
        ExecuteSql(args); 
        Console.WriteLine("execsql Ok"); 
        Console.WriteLine(_sql); 
       } 
      } 
      catch (Exception ex) 
      { 
       Environment.ExitCode = 2; 
       Console.WriteLine("ExecSql Encountered an Error"); 
       Console.WriteLine(_sql); 
       Console.WriteLine(ex.Message); 
      } 

     } 

     private static void ExecuteSql(string[] args) 
     { 
      LoadSql(args); 

      using (OracleConnection conn = GetConnection(args)) 
      { 
       conn.Open(); 
       OracleCommand cmd = new OracleCommand(); 
       cmd.Connection = conn; 

       cmd.CommandText = _sql; 
       cmd.ExecuteNonQuery(); 
      } 
     } 

     private static void LoadSql(string[] args) 
     { 
      if (args[3].StartsWith("/f=")) // not tested 
      { 
       StringBuilder script = new StringBuilder(); 
       string fname = args[3].Split('=')[1]; 

       string[] strings = File.ReadAllLines(fname); 

       foreach(string str in strings) 
        script.Append(str); 

       _sql = script.ToString(); 
      } 
      else 
      { 
       _sql = args[3]; 
      } 
     } 

     private static bool CheckArgs(string[] args) 
     { 
      if (args.Count() == 4) 
      { 
       return true; 
      } 
      else 
      { 
       Console.WriteLine("Invalid Number Of Arguments - Expected 4"); 
       Console.WriteLine("Use : execsql <dbServer> <dbUser> <dbPassword> <sql>"); 
       Environment.ExitCode = 1; 
       return false; 
      } 
     } 

     private static OracleConnection GetConnection(string[] args) 
     { 
      string connectionString = String.Format("Data Source={0};User ID={1};Password={2}", args[0], args[1], args[2]); 
      return new OracleConnection(connectionString); 
     } 
    } 
} 
相關問題