[英]Create a local database programmatically in c#
我正在尝试创建一个包装类来创建数据库。
我希望通过使用create和delete函数在代码中创建和销毁数据库。
我在线阅读了使用DROP DATABASE会破坏数据库的信息,但是由于无法编写create函数,因此无法检查是否正确解释了信息。
我发现的示例全部用于包含服务器的.mdf数据库。
我的数据库将仅在本地使用,并且将包含一个数据表。
数据库将在创建时由用户选择的数据文件填充。
下面是我已经开始写的课。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlServerCe;
using System.Windows.Forms;
using System.IO;
namespace DatabaseForm
{
class DatabaseManager
{
private SqlCeConnection _sqlConnection;
private string _cacheDatabase;
private string _password;
/// <summary>
///
/// </summary>
public DatabaseManager()
{
}
/// <summary>
///
/// </summary>
/// <returns></returns>
private string ConnectionString()
{
return string.Format("DataSource=\"{0}\"; Password='{1}'", this._cacheDatabase, this._password);
}
/// <summary>
///
/// </summary>
private void Open()
{
if (_sqlConnection == null)
{
_sqlConnection = new SqlCeConnection(this.ConnectionString());
}
if (_sqlConnection.State == ConnectionState.Closed)
{
_sqlConnection.Open();
}
}
/// <summary>
///
/// </summary>
private void Close()
{
if (_sqlConnection != null)
{
if (_sqlConnection.State == ConnectionState.Open)
{
_sqlConnection.Close();
}
}
}
/// <summary>
///
/// </summary>
public void CreateDatabase(string dbname, string password)
{
string strCommand;
try
{
Open();
strCommand = "CREATE DATABASE " + dbname;
SqlCeCommand sqlCommand = new SqlCeCommand(strCommand, _sqlConnection);
sqlCommand.ExecuteNonQuery();
Close();
_cacheDatabase = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + dbname;
_password = password;
}
catch (Exception exc)
{
MessageBox.Show("Error in CreateDatabase(): " + exc.Message);
}
}
/// <summary>
///
/// </summary>
public void Delete()
{
string strCommand;
try
{
Open();
strCommand = "DROP DATABASE MyTable";
SqlCeCommand sqlCommand = new SqlCeCommand(strCommand, _sqlConnection);
sqlCommand.ExecuteNonQuery();
Close();
}
catch (Exception exc)
{
MessageBox.Show("Error in Delete(): " + exc.Message);
}
}
}
}
在担心课程可能会失败之前,我想先完成此工作。 我将在以后添加防御代码。
因此,问题所在与SqlCeConnection有关。 创建数据库需要连接字符串是什么?
创建数据库后,我可以使用:
_cacheDatabase = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\MyDatabase.sdf";
_password = "";
string.Format("DataSource=\"{0}\"; Password='{1}'", _cacheDatabase, _password);
但是,直到调用CREATE DATABASE后,MyDatabase.sdf才存在。
因此,连接字符串是什么?
如果您真的想要DROP
/ CREATE
的数据库,那么正确获取脚本的最简单方法是在SQL Management Studio中创建示例数据库,然后右键单击该数据库,然后选择Tasks > Generate Scrips...
有很多选项可供选择,其中包括DROP
/ CREATE
。 然后,您需要关心的是如何执行脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.