防止在C#中编辑PRIMARY KEY COLUMN值

时间:2013-08-22 09:49:03

标签: c# asp.net datagridview primary-key identity-column

  1. 我正在从另一个数据视图中导入一行进行编辑。
  2. 编辑值。
  3. 保存值。 但我不希望用户在PRIMARY KEY TABLE的列中进行更改。
  4. 我有

    的主键列名称
    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("'");
                        }
    

    在这种情况下,如何检测用户是否正在更改主键列的值?

1 个答案:

答案 0 :(得分:0)

你不应该像这样连接你的SQL语句。

而是使用SQL参数来设置各个属性。

有关如何在此示例中使用SQLParameters的示例: http://www.dotnetperls.com/sqlparameter

希望这有帮助!