C# 创建数据库表无效->;存在,无法打开

C# 创建数据库表无效->;存在,无法打开,c#,sql,C#,Sql,我有一个带有两个按钮的简单程序,可以创建一个新数据库和一个新表 我可以创建数据库,但是我不能创建一个新表,我不知道为什么 在这里,我可以用这段代码创建一个新的数据库 string DB_PATH = "C:\\Databases\\"; string database = form1.textBox5.Text; string DB_NAME = database; string sqlCreateDBQuery; SqlConnection myConn = new SqlConnection

我有一个带有两个按钮的简单程序,可以创建一个新数据库和一个新表

我可以创建数据库,但是我不能创建一个新表,我不知道为什么

在这里,我可以用这段代码创建一个新的数据库

string DB_PATH = "C:\\Databases\\";
string database = form1.textBox5.Text;
string DB_NAME = database;
string sqlCreateDBQuery;
SqlConnection myConn = new SqlConnection("Server=DESKTOP-17BECDU;Integrated security=SSPI;database=master");

sqlCreateDBQuery = 
  " CREATE DATABASE "
  + DB_NAME
  + " ON PRIMARY "
  + " (NAME = " + DB_NAME + "_Data, "
  + " FILENAME = '" + DB_PATH + DB_NAME + ".mdf', "
  + " SIZE = 20MB,"
  + " FILEGROWTH = 100%) "
  + " LOG ON (NAME =" + DB_NAME + "_Log, "
  + " FILENAME = '" + DB_PATH + DB_NAME + "Log.ldf', "
  + " SIZE = 10MB, "
  + " FILEGROWTH = 100%) ";

SqlCommand myCommand = new SqlCommand(sqlCreateDBQuery, myConn);
try
{
    myConn.Open();
    myCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
    AppendTextBox(Convert.ToString(ex));
}
finally
{
    if (myConn.State == ConnectionState.Open)
    {
        myConn.Close();
    }
    myConn.Dispose();
}
有了这个代码,我想用板条箱装一个新表,但我得到一个错误

string databasename = form1.textBox5.Text;
string str = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\\Databases\\" + databasename + ".mdf;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30;";

using (SqlConnection myConn = new SqlConnection(str))
{
    myConn.Open();

    SqlCommand myCommand = new SqlCommand("CREATE TABLE [dbo].[" + databasename + "]("
    + "[IDTest] INT IDENTITY (1, 1) NOT NULL,"
    + "[Test] NVARCHAR (10) NULL,"
    + "CONSTRAINT [PK_" + databasename + "] PRIMARY KEY CLUSTERED ([IDTest] ASC))", myConn);
    {
        myCommand.ExecuteNonQuery();
    }
    myConn.Close();
}
错误输出

System.Data.SqlClient.SqlException(0x80131904):尝试为文件C:\Databases\test12.mdf附加自动命名数据库失败。存在同名数据库,或无法打开指定的文件,或该文件位于UNC共享上

用->

string str = @"Data Source=DESKTOP-17BECDU;Initial Catalog=" + databasename + ";Trusted_Connection=True;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30;";

在创建和附加该数据库的第一个查询中,无需在创建表查询中再次附加该数据库:

  string str = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\\Databases\\" + databasename + ".mdf;Integrated Security=True;
您只需使用:

    string database = form1.textBox5.Text;
    string str= @"Data Source=DESKTOP-17BECDU;Initial Catalog="+database+"Integrated Security=SSPI;MultipleActiveResultSets=True;Connect Timeout=30;";

这两个连接之间的连接字符串大不相同<代码>服务器=桌面-17BECDU;综合安全=SSPI;数据库=mastervs
数据源=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\\Databases\\“+databasename+”.mdf;综合安全=真实;MultipleActiveResultSets=True;连接超时=30为什么不使用创建数据库时使用的相同连接字符串进行连接?这似乎很管用。。这是可行的,但是。。。用户“DESKTOP-17BECDU\Admin”登录失败没有密码我也可以这样做吗?密码是什么?我没有本地管理员帐户的密码…您可以以用户Avctive Directry access登录,我将更新我的问题Hmm,我的结果与Integrated Security=SSPI相同,登录失败:/try连接到数据库,而不使用初始Catalog=“+database+”参数,您还可以检查sql以查看哪些用户有权访问sql Server我解决了问题,我的新连接字符串是->字符串str=@“数据源=桌面-17BECDU;初始目录=“+databasename+”;Trusted_Connection=True;Integrated Security=True;MultipleActiveResultSets=True;连接超时=30;”;