Как я могу изменить имя столбца из таблицы SQL на работающем веб-сайте asp.net? - PullRequest
0 голосов
/ 18 октября 2019

Я создал веб-сайт с ASP.NET, который подключен к базе данных SQL.

Веб-сайт показывает таблицу с помощью представления сетки.

Моя цельчто пользователь может добавить в эту таблицу столбец и дать ему имя. Это с помощью TextBox и кнопки.

Я так далеко, что я могу добавить таблицу столбец с помощью нажатия кнопки, но я не знаю, как я могу дать столбцу имя с помощью TextBox

private void disp_data()
{
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select * from table1";
    cmd.ExecuteNonQuery();
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(cmd);                                                
    da.Fill(dt);
    GridView3.DataSource = dt;
    GridView3.DataBind();
}

--- Try1

protected void AddRow_Click(object sender, EventArgs e)
{

    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;         
    cmd.CommandText = "ALTER TABLE table1 ADD '"+TextBox3.Text+"' VARCHAR(50) NULL;";            
    cmd.ExecuteNonQuery();

    disp_data();
}

--- Try2

protected void AddRow_Click(object sender, EventArgs e)
{

    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    string Columnname = Convert.ToString(TextBox3.Text);
    cmd.CommandText = "ALTER TABLE table1 ADD @CName VARCHAR(50)   NULL;";
    cmd.Parameters.AddWithValue(@"CName", Columnname);
    cmd.ExecuteNonQuery();

    disp_data();
}

protected void AddRow_Click(object sender, EventArgs e)
{
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;         
    cmd.CommandText = "ALTER TABLE table1 ADD NewColumn VARCHAR(50)        NULL;";            
    cmd.ExecuteNonQuery();

    disp_data();
}                           // This works

--- Try1

Система. Data.SqlClient.SqlException: «Неверный синтаксис рядом с« Textboxcontent ».»

--- Try2

System.Data.SqlClient.SqlException: «Неверный синтаксис рядом»@CName '. "

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Мне пришлось добавить «Заменить», чтобы сделать @CNAME полезным, теперь это работает

Защищенный void AddRow_Click (отправитель объекта, EventArgs e) {

                SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;         
        cmd.CommandText = "ALTER TABLE table1 ADD @CNAME VARCHAR(50) NULL;";
        cmd.CommandText = cmd.CommandText.Replace("@CNAME", TextBox3.Text);
       // cmd.Parameters.AddWithValue("@CName", TextBox3.Text);
        cmd.ExecuteNonQuery();

        disp_data();
    }
0 голосов
/ 18 октября 2019

Я бы не советовал попробовать 1, поскольку он уязвим для SQL-инъекций. Попытка 2 не сработала, потому что вы используете дословную строку вместо @CName в качестве строки.

protected void AddRow_Click(object sender, EventArgs e) {

  SqlCommand cmd = con.CreateCommand();
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = "ALTER TABLE table1 ADD @CName VARCHAR(50)   NULL;";
  cmd.Parameters.AddWithValue("@CName", TextBox3.Text);
  cmd.ExecuteNonQuery();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...