我在 SQL 数据库表中有一个名称加密的列(所有其他列均未加密)。而且我必须解密具有加密名称的列以在 DataGrid 中显示给我的应用程序的用户,但不应更改 SQL 数据库的实际表。(必须保持为加密名称)。
我认为 UpdateCommand 可以更新实际表,我必须找到 UpdateCommand 下面的替代方法。
或者是否有其他方法可以仅解密 DataTable 上不影响数据库实际表的 1 列?
我的简单代码是,
SqlCommand gridcomm = new SqlCommand();
gridcomm.Connection = Conn;
gridcomm.CommandText = "SELECT Id, customername, phonenumber FROM customers";
SqlDataAdapter gridda = new SqlDataAdapter(gridcomm);
SqlDataReader gridreader = gridcomm.ExecuteReader();
while (gridreader.Read())
{
}
gridreader.Close();
DataTable griddt = new DataTable("customers");
gridda.Fill(griddt);
foreach (DataRow row in griddt.Rows)
{
string strcustomername = (string) row["customername"].ToString();
bytecustomername = Convert.FromBase64String(strcustomername);
string decryptedcustomername = DecryptStringFromBytes_Aes(bytecustomername, byteAESKey, byteAESIV);
row["customername"] = decryptedcustomername;
}
gridda.UpdateCommand = new SqlCommandBuilder(gridda).GetUpdateCommand();
dataGrid_Totalcustomerlist.ItemsSource = griddt.DefaultView;
gridda.Update(griddt);