如何使用“代码”创建新的.mdf / .sdf数据库?
我试过这个: http://support.microsoft.com/kb/307283
ConnectionString的所有功能都失败了。由于在创建之前我没有连接到存在的文件,我怎么才能只创建一个mdf / sdf数据库来连接到SQL Express服务器?
我希望能够只连接到服务器并创建文件,从那里可能更容易创建表等。
有什么建议吗?
答案 0 :(得分:19)
public static void CreateSqlDatabase(string filename)
{
string databaseName = System.IO.Path.GetFileNameWithoutExtension(filename);
using (var connection = new System.Data.SqlClient.SqlConnection(
"Data Source=.\\sqlexpress;Initial Catalog=tempdb; Integrated Security=true;User Instance=True;"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText =
String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, filename);
command.ExecuteNonQuery();
command.CommandText =
String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName);
command.ExecuteNonQuery();
}
}
}
将Catalog=tempdb
更改为Catalog=master
,其效果很好
样品使用:
var filename = System.IO.Path.Combine("D:\\", "testdb.mdf");
if (!System.IO.File.Exists(filename))
{
CreateSqlDatabase(filename);
}
答案 1 :(得分:2)
关于.sdf文件(SQL Server CE),您可以使用SqlCeEngine
类创建新数据库,如this MSDN article中所述。
答案 2 :(得分:0)
确保您拥有有效的连接字符串。
您需要的数据库/目录必须设置为有效的数据库,通常这可以是“主”,它始终可用,因为您将使用master来创建数据库。
答案 3 :(得分:0)
如果您需要以编程方式从头开始创建数据库,我通常会进入SQL Server Management Studio并在第一步中通过gui创建它。但是,不是单击右下方的“确定”按钮,而是单击顶部工具栏中的“脚本”按钮。这将为我提供一个完整的sql脚本,用于创建我想拥有的数据库。然后我可以改变脚本并动态更改我想要的部分。
答案 4 :(得分:0)
我认为ConnectionString中的问题是。它应该指向 master db的有效实例(如您引用的文章中所述)。确保它是正确的,它应该工作。
答案 5 :(得分:0)
将connectionString与InitialCatalog = master
一起使用。由于只有master具有创建数据库的默认权限。
答案 6 :(得分:0)
创建.sdf数据库
using System.Data.SqlServerCe;
using System.IO;
string folderPath="D:\\Compact_DB"
string connectionString;
string fileName =folderPath+"\\School.sdf";
string password = "12345";
if (File.Exists(fileName))
{
File.Delete(fileName);
}
connectionString = string.Format("DataSource=\"{0}\"; Password='{1}'", fileName, password);
SqlCeEngine obj_ceEngine = new SqlCeEngine(connectionString);
obj_ceEngine.CreateDatabase();