2012-01-10 25 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

+0

デバッガで実行してみることはできますか?どのクエリが失敗しているかを確認します。また、 'error'テーブルの' message'カラムの前後に引用符を入れなかったことに気付きました。これはキーワードではないと思うので問題ではありませんが、その列の引用符を省略した理由は不思議です。 –

+0

@MusiGenesis:通常のウィンドウで。接続文字列が今投稿されました。私の更新をチェックしてください。 – Jack

答えて

2

ます(####はサポートされて4桁のLCID番号です)LCD=####を経由してあなたのconnection文字列にlocale IDを指定していますか?その場合は、オペレーティングシステムでサポートされていることを確認してください。

そうでない場合は、データベースによってサポートされていない、異なるカルチャにオペレーティングシステムが設定されている可能性があります。

(@MusiGenesisに記載されているように)接続文字列を送信して、使用しているO/Sに関する詳細をお知らせください。

+0

私は接続文字列を掲示しました。私の更新をチェックしてください。 linqpadを使用して.mdfファイルを作成すると正常に動作します。私は、間違いがC#経由で.mdfファイルを作成するモードであると信じています。 – Jack

関連する問題