C# + Access запись и чтение массива байт

232
07 марта 2017, 13:20

Имеется программа которая шифрует пароли с помощью AES. Этот алгоритм шифрования использует массивы байт. Ключ и вектор инициализации (IV) записываю в поле OLE и они вроде как хранятся там, но в момент когда пытаюсь достать данные выскакивает ошибка.

public byte[] GetKeyFromKeyTable(int ID)
{
     byte[] Key;
     DataTable stor = new DataTable();
     string sql = string.Format("Select [EKey] From [KeyTable] Where [Id_Auth]  = '{0}'", ID);
     using (OleDbCommand cmd = new OleDbCommand(sql, this.connect))
     {
          OleDbDataReader dr = cmd.ExecuteReader();
          stor.Load(dr);
          dr.Close();
          Key = (byte[])stor.Rows[0][0];
     }
     return Key;
}

System.Data.OleDb.OleDbException не обработано ErrorCode=-2147217913 HResult=-2147217913 Message=Несоответствие типов данных в выражении условия отбора. Source=Microsoft JET Database Engine StackTrace: в System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) в System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) в System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) в System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) в System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) в System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) в System.Data.OleDb.OleDbCommand.ExecuteReader() в master_password.DBase.GetKeyFromKeyTable(Int32 ID) в C:\Users\rmatu\Desktop\PasswordStorage\PasswordStorage\DBase.cs:строка 336 в PasswordStorage.Main.Main_Load(Object sender, EventArgs e) в C:\Users\rmatu\Desktop\PasswordStorage\PasswordStorage\Main.cs:строка 86 в System.Windows.Forms.Form.OnLoad(EventArgs e) в MetroFramework.Forms.MetroForm.OnLoad(EventArgs e) в System.Windows.Forms.Form.OnCreateControl() в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) в System.Windows.Forms.Control.CreateControl() в System.Windows.Forms.Control.WmShowWindow(Message& m) в System.Windows.Forms.Control.WndProc(Message& m) в System.Windows.Forms.ScrollableControl.WndProc(Message& m) в System.Windows.Forms.Form.WmShowWindow(Message& m) в System.Windows.Forms.Form.WndProc(Message& m) в MetroFramework.Forms.MetroForm.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) InnerException:

Answer 1

а уберите кавычки в запросе для '{0}' -> {0} – Murad

действительно помогло

READ ALSO
Десериализация JSON в LiteDB

Десериализация JSON в LiteDB

В проекте нужно из JSON-строки получить экземпляр некоторого класса, используя библиотеку LiteDBJSON:

1185
Emgu C# [Unable to read from webcam c# emgu]

Emgu C# [Unable to read from webcam c# emgu]

Нашел на GitHub'e пример с использованием Emgu на C# (RedballTracker)Решил испытать этот пример, изучив код (учусь работать с Emgu)

298
WPF (C#) Splash экран прогресса загрузки в отдельном потоке

WPF (C#) Splash экран прогресса загрузки в отдельном потоке

Имеется приложениеПервый запуск

427
Регулярные выражения C# Выборка текста

Регулярные выражения C# Выборка текста

Не могу составить правильно регулярное выражениеПомогите!

261