如何使用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();

如何使用ADO.NET创建Microsoft SQL Server数据库

根据您的代码,您创建了数据库,所以…在调用命令创建表之前,您是否在字符串变量中添加了"USE DATABASE [DataBaseName]" ?在我的例子中,我必须添加以下代码来创建表。当然,您必须注意上面注释的连接字符串的用户权限。

根据错误描述,以下步骤可能有效。我假设您的SQL服务器与您的测试程序运行在同一台机器上。

  1. 创建一个全局可写目录(C:'mydbdir)
  2. 让数据库文件在那里创建(C:'mydbdir'MyDatabaseData.mdf)
  3. 尝试在DB
  4. 中创建表

正如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服务器完成其余的工作。这样创建更容易,但这只是另一种方法。