detailsview输入新建的数据库的信息,里有个插入和取消,我点插入就在ItemInserted事件中新建一个数据库,接下来我想在这个数据库中新建表,但是怎么试也不成功,不知道问题出在哪了public partial class ProManagement_NewProgram : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString.Get("Project_ID") != null)
        {
            DetailsView1.DefaultMode = DetailsViewMode.Edit;
        }
    }
    protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
    {
        string str1;
        str1 = (DetailsView1.FindControl("TextBox1") as System.Web.UI.WebControls.TextBox).Text.ToString();
        String str;
         SqlConnection myConn = new SqlConnection("Server=LIUKAI-THINK;Integrated security=SSPI;database=master");
        str = "CREATE DATABASE "+str1+" ON PRIMARY " +
        "(NAME = str1_Data, " +
        "FILENAME = 'D:\\"+str1+".mdf', " +
        "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
        "LOG ON (NAME = MyDatabase_Log, " +
        "FILENAME = 'D:\\"+str1+".ldf', " +
        "SIZE = 1MB, " +
        "MAXSIZE = 5MB, " +
        "FILEGROWTH = 10%)";
        SqlCommand myCommand = new SqlCommand(str, myConn);
            myConn.Open();
            myCommand.ExecuteNonQuery();
            if (myConn.State == ConnectionState.Open)
            {
                myConn.Close();
            }
        EndEditing();
    }
我新建表的代码是
SqlConnection myConn = new SqlConnection("Server=LIUKAI-THINK;Integrated security=SSPI;database=master");
string str2;
        str2 = "CREATE TABLE Project" +
            "Project_ID int," +
            "(Name nvarchar(256) NULL," +
            "Owner nvarchar(256) NULL," +
            "Description char(10) NULL" +
            "PathToDatabaseFiles nvarchar(256) NULL" +
            "AutoShrink int NULL" +
            "Epoch datetime NULL" +
            "State int NULL)";
SqlCommand myCommand1 = new SqlCommand(str2, myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
myConn.Close();

解决方案 »

  1.   

    管你建库建表,本质上还是执行SQL代码。
    你把具体的错误提示贴出来啊,或者你可以自己把生成的建库建表代码考到sqlserver执行一下。
      

  2.   

    新建表的代码写错了,不好意思
    SqlConnection myConn = new SqlConnection("Server=LIUKAI-THINK;Integrated security=SSPI;database=str1");
      

  3.   


     protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
        {
            string str1;
            str1 = (DetailsView1.FindControl("TextBox1") as System.Web.UI.WebControls.TextBox).Text.ToString();
            String str;
             SqlConnection myConn = new SqlConnection("Server=LIUKAI-THINK;Integrated security=SSPI;database=master");
            str = "CREATE DATABASE "+str1+" ON PRIMARY " +
            "(NAME = str1_Data, " +
            "FILENAME = 'D:\\"+str1+".mdf', " +
            "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
            "LOG ON (NAME = MyDatabase_Log, " +
            "FILENAME = 'D:\\"+str1+".ldf', " +
            "SIZE = 1MB, " +
            "MAXSIZE = 5MB, " +
            "FILEGROWTH = 10%)";
            SqlCommand myCommand = new SqlCommand(str, myConn);
                myConn.Open();
                myCommand.ExecuteNonQuery();
                if (myConn.State == ConnectionState.Open)
                {
                    myConn.Close();
                }
                SqlConnection thisConnection = new SqlConnection("Server=LIUKAI-THINK;Integrated security=SSPI;database=str1");
                string str2;
                str2 = "CREATE TABLE Project" +
                    "Project_ID int," +
                    "(Name nvarchar(256) NULL," +
                    "Owner nvarchar(256) NULL," +
                    "Description char(10) NULL" +
                    "PathToDatabaseFiles nvarchar(256) NULL" +
                    "AutoShrink int NULL" +
                    "Epoch datetime NULL" +
                    "State int NULL)";
                SqlCommand myCommand1 = new SqlCommand(str2, thisConnection);
                thisConnection.Open();
                myCommand1.ExecuteNonQuery();
                thisConnection.Close();        EndEditing();
        }
    错误是:在向服务器发送请求时发生传输级错误。 (provider: Shared Memory Provider, error: 0 - 句柄无效。) 
    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。 (provider: Shared Memory Provider, error: 0 - 句柄无效。)源错误: 
    行 52:             SqlCommand myCommand1 = new SqlCommand(str2, thisConnection);
    行 53:             thisConnection.Open();
    行 54:             myCommand1.ExecuteNonQuery();行 55:             thisConnection.Close();
    行 56: 
     
      

  4.   

    在Create table的SQL语句之前使用刚创建的表str2 = "USE DATABASE "+str1+";CREATE TABLE Project" +
                    "Project_ID int," +
                    "(Name nvarchar(256) NULL," +
                    "Owner nvarchar(256) NULL," +
                    "Description char(10) NULL" +
                    "PathToDatabaseFiles nvarchar(256) NULL" +
                    "AutoShrink int NULL" +
                    "Epoch datetime NULL" +
                    "State int NULL)";试试这种方式
      

  5.   

    还有啊,如果你数据库中已经有这个数据库了,你这时还点它会怎么样呢?还能create吗?
    不建议这种操作放到这里面去做,你应该写个存储过程,然后代码里面调用一下这个存储过程就行了。
      

  6.   

    use Databasename
    gocreate table tablename
    ()
    按照这样的格式
      

  7.   

    use databasename
    gocreate table tablename
    ()
    你用这样的格式就行