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

相关问题