Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式创建SQLCE数据库_C#_Sql Server Ce - Fatal编程技术网

C# 以编程方式创建SQLCE数据库

C# 以编程方式创建SQLCE数据库,c#,sql-server-ce,C#,Sql Server Ce,[编辑-带答案] 以下是我以编程方式创建SQL CE数据库的代码: /* get the Path */ var directoryName = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); var fileName = System.IO.Path.Combine(directoryName, "Foo2Database.sdf"); /* check if exists */ if (File.

[编辑-带答案]

以下是我以编程方式创建SQL CE数据库的代码:

/* get the Path */
var directoryName = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
var fileName = System.IO.Path.Combine(directoryName, "Foo2Database.sdf");

/* check if exists */
if (File.Exists(fileName))
    File.Delete(fileName);

string connStr = @"Data Source = " + fileName;

/* create Database */
SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();

/* create table and columns */
using (SqlCeConnection conn = new SqlCeConnection(connStr))
{
    using (SqlCeCommand cmd = new SqlCeCommand(@"CREATE TABLE FooTable (Foo_ID int, FooData NVARCHAR(200))", conn))
    {
        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            conn.Close();
        }

    }
}

我使用过SQLCE 3.1和SharpDevelop,请尝试以下代码,看看这是否是您想要的:

string connStr = "Data Source = FooDatabase.sdf; Password = SomePassword";

if (File.Exists("FooDatabase.sdf")) 
    File.Delete("FooDatabase.sdf");  

SqlCeEngine engine = new SqlCeEngine(connStr); 
engine.CreateDatabase();

SqlCeConnection conn = null;


try 
{
    conn = new SqlCeConnection(connStr);
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "CREATE TABLE FooTable(col1 int, col2 ntext)";
    cmd.ExecuteNonQuery();
}
catch 
{

}
finally 
{
    conn.Close();
}

请注意,数据库只是一个文件,因此可以通过查看文件是否存在来检查数据库是否存在,也可以通过删除文件来删除数据库。希望这能有所帮助。

您应该使用SqlCeEngine、SqlCeConnection,当然还有SqlCeCommand上的using语句。几年前我就做过这件事,我想像这个try-catch-finally方法一样关闭连接。遗憾的是,我在C#net上自学,对所使用的新实践不太熟悉:)。也就是说,我想你们可以正确地使用这段代码,并将我的示例看作是一种算法:Dthanks。根据你所给出的,我已经编写了我的代码并编辑了我的问题和答案。你确定这段代码引发了异常吗?如果你遇到这样一个奇怪的错误,你将在strack跟踪中得到确切的代码行号。请提供更多详细信息,如完整的异常消息和代码位置。
关闭
不是必需的,因为您使用的是
使用