c#以编程方式连接到SQL服务器CE

本文关键字:SQL 服务器 CE 连接 编程 方式 | 更新日期: 2023-09-27 18:12:59

我对数据库编程完全陌生。我正在使用Visual Studio 2010,并希望以编程方式创建一个数据库。

到目前为止,我已经尝试连接到一个SQL Server精简版,像这样:

public class HistoryDBAccess
{
    private SqlConnection conn = new SqlConnection();
    public HistoryDBAccess()
    {
        conn.ConnectionString = @"Server=localhost;Integrated security=SSPI;database=master";
        string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
            "(NAME = MyDatabase_Data, " +
            "FILENAME = 'C:''MyDatabaseData.mdf', " +
            "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
            "LOG ON (NAME = MyDatabase_Log, " +
            "FILENAME = 'C:''MyDatabaseLog.ldf', " +
            "SIZE = 1MB, " +
            "MAXSIZE = 5MB, " +
            "FILEGROWTH = 10%)";
        SqlCommand myCommand = new SqlCommand(str, conn);
        try
        {
            conn.Open();
            myCommand.ExecuteNonQuery();
            MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        finally
        {
            if (conn.State == System.Data.ConnectionState.Open)
            {
                conn.Close();
            }
        }
    }
}

tor中的连接失败,提示无法建立连接。

使用数据库向导VS2010是好的,但我怎么能看到windows7下的SQLCe服务器?

是否在控制面板下的某个地方,我是否需要在连接字符串中设置默认密码?

许多谢谢,

Juergen

c#以编程方式连接到SQL服务器CE

我认为你应该在你的项目中使用服务器资源管理器(或数据库资源管理器)添加一个连接到你的数据库,然后检查你的连接字符串。

看起来您试图在打开连接之前传递con对象

所以试试这个,让我知道。

 public HistoryDBAccess()
    {
        conn.ConnectionString = @"Server=localhost;Integrated security=SSPI;database=master";
        string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
            "(NAME = MyDatabase_Data, " +
            "FILENAME = 'C:''MyDatabaseData.mdf', " +
            "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
            "LOG ON (NAME = MyDatabase_Log, " +
            "FILENAME = 'C:''MyDatabaseLog.ldf', " +
            "SIZE = 1MB, " +
            "MAXSIZE = 5MB, " +
            "FILEGROWTH = 10%)";
          conn.Open();
        SqlCommand myCommand = new SqlCommand(str, conn);
        try
        {
            myCommand.ExecuteNonQuery();
            MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        finally
        {
            if (conn.State == System.Data.ConnectionState.Open)
            {
                conn.Close();
            }
        }
    }
}

一旦您创建了它,您可能会想要与它交互。你应该考虑使用NHibernate。它有一个叫做SchemaExport的特性,可以随心所欲地删除和创建数据库。

下面是一个使用SQL Express的例子,但是使用Compact Edition并没有太大的不同。你可以在Visual Studio中打开NHibernate,点击project> Manage NuGet Packages,然后在All Online中搜索NHibernate。
public class NHContext
{
    protected static Configuration NHConfiguration;
    protected static ISessionFactory SessionFactory;
    public static void DropDatabase()
    {
        new SchemaExport(NHConfiguration).Drop(false, true);
    }
    public static void CreateDatabase()
    {
        new SchemaExport(NHConfiguration).Create(false, true);
    }
    protected static Configuration configureNHibernate()
    {
        var configure = new Configuration();
        configure.SessionFactoryName("BuildIt");
        configure.DataBaseIntegration(db =>
        {
            db.Dialect<MsSql2008Dialect>();
            db.Driver<Sql2008ClientDriver>();//db.Driver<SqlClientDriver>();
            db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
            db.IsolationLevel = IsolationLevel.ReadCommitted;
            db.ConnectionString = @"Data Source=.'SQLEXPRESS;Persist Security Info=True;Integrated Security=SSPI;Initial Catalog=NHibernate32Test;User Instance=False";
            db.Timeout = 10;
            // For testing
            db.LogFormattedSql = true;
            db.LogSqlInConsole = true;
            db.AutoCommentSql = true;
        });
        return configure;
    }
    public static void Setup()
    {
        NHConfiguration = configureNHibernate();
        HbmMapping mapping = getMappings();
        NHConfiguration.AddDeserializedMapping(mapping, "NHibernate32Test");
        SchemaMetadataUpdater.QuoteTableAndColumns(NHConfiguration);
        SessionFactory = NHConfiguration.BuildSessionFactory();
    }
}