如何使用ADO.NET创建Microsoft SQL Server数据库
本文关键字:SQL Server 数据库 Microsoft 创建 何使用 ADO NET | 更新日期: 2023-09-27 18:16:09
如何使用ADO创建Microsoft SQL Server数据库。.NET和Visual c# .NET编程?
我需要以编程方式创建数据库。
我使用这段代码,但在创建数据库后,由于权限问题,我无法向该数据库添加表
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, myConn);
try
{
myConn.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 (myConn.State == ConnectionState.Open)
{
myConn.Close();
}
}
我创建表的代码
string path="";// new DB path
string constring = "Data Source=.''SQLEXPRESS;AttachDbFilename=" + path + ";Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True";
string qry="create table table1 ( ID int, name varchar(20) )";
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand(query, con);
cmd.ExecuteNonQuery();
con.Close();
根据您的代码,您创建了数据库,所以…在调用命令创建表之前,您是否在字符串变量中添加了"USE DATABASE [DataBaseName]"
?在我的例子中,我必须添加以下代码来创建表。当然,您必须注意上面注释的连接字符串的用户权限。
根据错误描述,以下步骤可能有效。我假设您的SQL服务器与您的测试程序运行在同一台机器上。
- 创建一个全局可写目录(C:'mydbdir)
- 让数据库文件在那里创建(C:'mydbdir'MyDatabaseData.mdf)
- 尝试在DB 中创建表
正如ta. spot .所指出的,您(很可能)缺少对SQL server进程的到C:' 的写权限。
您创建了一个数据库,但没有为其设置权限。在数据库创建后添加:
var userName = "sa"; // username that is used in the connection
var str = String.Format("USE MyDatabase; EXEC sp_changedbowner '{0}'", userName);
用这个做一个ExecuteNonQuery,然后你就有权限添加表,等等。
编辑
附注:我只执行USE master; IF ( NOT(SELECT IsNull(db_id('myDBname'),-1)>0) ) CREATE DATABASE 'myDBname'
,让SQL服务器完成其余的工作。这样创建更容易,但这只是另一种方法。