Предотвращение редактирования значения PRIMARY KEY COLUMN в C#

  1. Я импортирую строку в datagridview из другой для редактирования.
  2. Отредактируйте значения.
  3. Сохраните значения. Но я не хочу, чтобы пользователь вносил изменения в столбец, который является ТАБЛИЦЕЙ ПЕРВИЧНОГО КЛЮЧА.

У меня есть имя столбца первичного ключа

string sql = "SELECT ColumnName = col.column_name FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage col ON col.Constraint_Name = tc.Constraint_Name AND col.Constraint_schema = tc.Constraint_schema WHERE tc.Constraint_Type = 'Primary Key' AND col.Table_name = '" + _lstview_item + "'";
            SqlConnection conn2 = new SqlConnection(cc.connectionString(cmb_dblist.Text));
            SqlCommand cmd_server2 = new SqlCommand(sql);
            cmd_server2.CommandType = CommandType.Text;
            cmd_server2.Connection = conn2;
            conn2.Open();
            string ColumnName = (string)cmd_server2.ExecuteScalar();
            //string ColumnName = (string)cmd_server2.ExecuteScalar();
            conn2.Close();

и я создаю оператор обновления, как показано ниже

 u.Append("UPDATE ");
                    u.Append("[Ref].[");
                    u.Append(_lstview_item);
                    u.Append("]");
                    u.Append("SET ");
                    for (i = 0; i < col_no; i++)
                    {
                        u.Append(col_name);
                        u.Append(" = ");
                        u.Append("'");
                        u.Append(col_value);
                        u.Append("'");
                    }

Как определить, меняет ли пользователь значение столбца первичного ключа в этой ситуации?


person Anoushka Seechurn    schedule 22.08.2013    source источник
comment
не могли бы вы просто добавить оператор if в свой цикл for вокруг вашего добавления: if (col_name != ColumnName)   -  person Tanner    schedule 22.08.2013
comment
Сделайте этот столбец сетки доступным только для чтения.   -  person Raghubar    schedule 22.08.2013
comment
Я не могу это сделать. Потому что datagridview заполняется каждый раз, когда я выбираю таблицу из списка таблиц.   -  person Anoushka Seechurn    schedule 22.08.2013


Ответы (1)


Вы не должны объединять свои операторы SQL таким образом.

Вместо этого используйте параметры SQL для установки отдельных свойств.

Посмотрите пример использования SQLParameters в этом образце: http://www.dotnetperls.com/sqlparameter.

Надеюсь это поможет!

person Amunk    schedule 22.08.2013