【问题标题】:Preventing edit of PRIMARY KEY COLUMN value in C#防止在 C# 中编辑 PRIMARY KEY COLUMN 值
【发布时间】:2013-08-24 23:34:31
【问题描述】:
  1. 我正在从另一个数据网格视图中导入一行以进行编辑。
  2. 编辑值。
  3. 保存值。 但我不希望用户在 PRIMARY KEY TABLE 列中进行更改。

我有主键列的名称

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("'");
                    }

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

【问题讨论】:

  • 你能不能只在你的 for 循环中添加一个 if 语句来围绕你的 append: if (col_name != ColumnName)
  • 将该网格列设为只读。
  • 我做不到。因为每次我从表列表中选择一个表时都会填充数据网格视图。

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


【解决方案1】:

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

改为使用 SQL 参数来设置各个属性。

请看一个示例,说明此示例中如何使用 SQLParameters: http://www.dotnetperls.com/sqlparameter

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多