2012-01-10 39 views
4

我使用以下方法創建數據庫文件。錯誤消息'此操作系統不支持指定的區域設置。'

public bool CreateDatabaseFile() 
{ 
    try 
    { 
     Stream file = File.Create(DBPath); 
     file.Close(); 
     return true; 
    } 
    catch (Exception) 
    { 
     return false; 
    } 
} 

但是,當我打電話

public void CreateDatabaseStruct() 
{ 
    var queries = new List<string> 
    { 
     "create table contacts (\"name\" nvarchar,\"emails\" nvarchar);", 
     "create table errors (\"code\" int, message nvarchar);" 
    }; 

    foreach (string query in queries) 
    { 
     var con = new SqlCeConnection(connectionString); 
     con.Open(); 
     var cmd = con.CreateCommand(); 

     cmd.CommandText = query; 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
} 

返回

指定的語言環境不支持此操作系統上[LCD - 1]。

我該如何解決這個問題?

UPDATE

連接字符串:

public static readonly string DBPath = "db.sdf"; 
public static readonly string connectionString = String.Format("Data Source={0}; Password=...", DBPath); 
+3

問題可能與您的連接字符串有關。你可以發佈它,也可以說你正在運行的是什麼(Windows Mobile或常規Windows)? – MusiGenesis 2012-01-10 14:32:02

+0

你可以嘗試通過調試器運行它。查看哪個查詢失敗。另外,我注意到你沒有在你的'errors'表中的'message'列中加引號。這可能不是問題,因爲我不相信這是一個關鍵字,但只是想知道爲什麼你省略了該列的引號。 – 2012-01-10 16:54:45

+0

@MusiGenesis:在正常的窗戶上。連接字符串現在已發佈。看看我的更新。 – Jack 2012-01-10 18:07:01

回答

2

你指定你connectionlocale ID通過LCD=####(其中####是一個支持4位LCID號)?如果是這樣,你確定它在你的操作系統上受支持嗎?

如果不是,則可能是您的操作系統設置爲不同的文化,這不受數據庫支持。

請發佈您的連接字符串,並提供一些關於您正在使用的操作系統的更多信息(如@MusiGenesis所述)。

+0

我發佈了我的連接字符串。看看我的更新。 它工作正常,如果使用linqpad創建.mdf文件我相信,錯誤是在我通過C#創建.mdf文件的模式。 – Jack 2012-01-11 13:03:21

相關問題