Используйте переменную в операторе обновления ASP.NET в SQL - PullRequest
0 голосов
/ 20 января 2012

Я хочу использовать имя переменной в качестве имени столбца в имени столбца ASP.NET.

Я получаю следующую ошибку:

Неверный синтаксис рядом с 'Февраль'.

Код

SqlConnection MyConn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\apptitude\projects\database\App_Data\Database.mdf;Integrated Security=True;User Instance=True");
        MyConn.Open();
        int i,n=5;
        String[] month=new String[12]{"January","February","March","April","May","June","July","August","September","Octomber","November","December"};
        int day = DateTime.Now.Day;
        int mon= DateTime.Now.Month;
        Label1.Text = day.ToString();
        if (day==1)
        {
            //for(i=1;i<=n;i++)
            //{
            //Label1.Text = "hi";
            int j = 1;
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = MyConn;
            cmd.CommandText = "update Yearly_data set **'"+month[mon]+"'=20";**
            i = cmd.ExecuteNonQuery();
            Label1.Text = i.ToString();
        }

Ответы [ 3 ]

5 голосов
/ 20 января 2012

Вам не нужно заключать имена столбцов в одинарные кавычки ('); отсюда это:

update Yearly_data set 'February'=20

Должно быть записано как

update Yearly_data set February=20

Если вы измените свой код на приведенный ниже, он будет работать:

cmd.CommandText = "update Yearly_data set "+month[mon]+"=20";

Тем не менее, обратите внимание, что создание инструкций Dynamic SQL - это то, что должно быть тщательно сделано, чтобы не подвергать ваше приложение риску SQL-инъекции .

3 голосов
/ 20 января 2012

Если каждый месяц года является именем столбца в Yearly_data, измените строку кода на:

cmd.CommandText = "update Yearly_data set ["+month[mon]+"]=20";
1 голос
/ 20 января 2012

В дополнение к уже даным ответам, в платформе есть способ получить название месяца с помощью функции DateTimeFormatInfo.GetMonthName .

static string GetMonthName(DateTime sourceDate)
{
    var dateFormatInfo = new DateTimeFormatInfo();
    return dateFormatInfo.GetMonthName(sourceDate.Month);
}

cmd.CommandText = String.Format("update Yearly_data set {0} = 20", GetMonthName(DateTime.Now));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...