Ich verwende SqlBulkCopy
und System.Data.Datatable
, um Daten in meine Datenbank einzufügen. Ich mache so etwas wie dieses:Wie füllt man verschlüsselte Spalten in der Datenbank mit SqlBulkCopy?
var table = new DataTable();
// Creating table schema
var newRow = table.NewRow();
newRow["FirstName"] = Parser.Parse(values[0])
newRow["LastName"] = Parser.Parse(values[1])
...
newRos["SSN"] = //here I need to encrypt by db certificate value[5] before set it to this row value
Und einfache Kopie Code db:
using (var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, transaction))
{
bulkCopy.BatchSize = 100;
bulkCopy.DestinationTableName = "dbo.Member";
try
{
bulkCopy.WriteToServer(table);
}
catch (Exception)
{
transaction.Rollback();
connection.Close();
throw;
}
}
Natürlich habe ich später verschlüsselte Spalte kann eine gespeicherte Prozedur in der Datenbank, aber ich tun möchte, dies in einer Transaktion. Ist es möglich, string
Wert mit meinem Zertifikat aus der Datenbank in Code zu verschlüsseln?
Vielen Dank im Voraus!
Warum können Sie den Wert nicht verwenden, um ihn in Ihrem C# -Code zu verschlüsseln? Warum können Sie der DataTable den Wert nicht hinzufügen, nachdem dieser verschlüsselt wurde? –
@Shahar Ich habe einen Hauptschlüssel, Zertifikat mit einem Algorithmus in db. Sind Sie sicher, dass Daten, die aus dem Code verschlüsselt werden, mit Daten kompatibel sind, die mit der Prozedur db entschlüsselt wurden? – user3818229