ASP.NET以编程方式创建数据库表

时间:2017-04-28 13:16:03

标签: asp.net

我正在制作一个像Instagram这样简单的网络应用。我想将每个用户的图像存储在单独的表中,例如:

  1. 新用户登录名为Bob123,
  2. 在表用户(Uzytkownicy)中为Bob123创建一条新记录,
  3. 在同一个数据库中创建一个名为Bob123的新表,并存储所有表 Bobs图片
  4. 我收到错误:'@name'附近的语法不正确

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            if (temp == 0)
            {
                Guid newGuid = Guid.NewGuid();
    
                SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["UzytkownicyConnectionString"].ConnectionString);
                conn.Open();
    
                string insertQuery = "insert into Uzytkownicy (Id, Login, Password) values (@id, @Uname, @password)";
                SqlCommand com = new SqlCommand(insertQuery, conn);
                com.Parameters.AddWithValue("@id", newGuid.ToString());
                com.Parameters.AddWithValue("@Uname", TextBoxUN.Text);
                com.Parameters.AddWithValue("@password", TextBoxPass.Text);
    
                SqlCommand comm = new SqlCommand("CREATE TABLE @name ([Image] VARBINARY (MAX) NOT NULL);", conn);
                comm.Parameters.AddWithValue("@name", TextBoxUN.Text);
    
                com.ExecuteNonQuery();
                comm.ExecuteNonQuery();
    
                Response.Redirect("MainWebSite.aspx");
                conn.Close();
            }
        }
        catch (Exception ex)
        {
            Response.Write("Error: " + ex.ToString());
        }
    }
    

3 个答案:

答案 0 :(得分:0)

@name是不正确的语法。

您正在尝试执行此特定代码行:

“CREATE TABLE @name([Image] VARBINARY(MAX)NOT NULL);”

针对sql数据库。 SQL不知道@name是什么。

对于hacky,但正确的语法,你应该这样做:

...

string tablename =“somename”; ...

“CREATE TABLE”+ tablename +“([Image] VARBINARY(MAX)NOT NULL);”

答案 1 :(得分:0)

你创建了一个名为" @ name" 使用任何其他名称

CREATE TABLE table_name([Image] VARBINARY (MAX) NOT NULL);", conn);

答案 2 :(得分:0)

我认为你的意思是写@Uname?

正如其他人所说,@ name不是有效的表名。

尝试做这样的事情:

string tablename = "Bob123";
SqlCommand comm = new SqlCommand(""CREATE TABLE " + tablename + " ([Image] VARBINARY (MAX) NOT NULL);", conn);