C # ODBC Вставка BLOB - PullRequest
       17

C # ODBC Вставка BLOB

0 голосов
/ 24 февраля 2019

Приведенный ниже код отлично работает при подключении к SQL Server, однако он выдает исключение, когда я пытаюсь указать его на базу данных Oracle.Исключение возвращает пустое сообщение об ошибке, поэтому я не совсем уверен, что мне следует смотреть дальше.Любая помощь будет принята с благодарностью.Я выполнил поиск перед тем, как сделать это сообщение, и все вопросы, касающиеся oracle, похоже, использовали методы Oracle ADO, а не ODBC.

Ниже приведена настройка переменной для функции read_blob_file:

  string dbname = "oracle_odbc_database";
  string uid = "username";
  string pwd = "password";
  string sql = "INSERT INTO CD_ATTACHMENT (\"ATTACHMENT_ID\",\"DESCRIPTION\",\"ATTACHMENT\",\"CREATE_DATE\",\"MIME_TYPE\",\"CREATE_USER_ID\",\"CREATE_APP_ID\",\"UPDATE_DATE\",\"UPDATE_USER_ID\",\"UPDATE_APP_ID\") VALUES (''YPoem'','NULL',?,'to_date('10/8/2013 6:30:41 AM','MM/DD/YYYY HH:MI:SS AM')','NULL',''EFPUFC1B(AMERICAS\\EFPUFC1B)'',''OpenWells'','NULL','NULL','NULL');";
  string blob_value = "'c:\\ATTACHMENT\\00AfKOHF-ATTACHMENT.blob'";
  string blob_column = "ATTACHMENT";


private int read_blob_file(string dbname, string uid, string pwd, string sql)
        {
            int rtncmd = -99;
            try
            {
                using (var conn = new OdbcConnection("DSN=" + dbname + ";UID=" + uid + ";pwd=" + pwd))
                {
                    conn.ConnectionTimeout = 1500;
                    conn.Open();
                    using (var cmd = conn.CreateCommand())
                    {
                        if (blob_value != "")
                        {
                            blob_value = blob_value.Replace("'","");
                            using (var inputStream = File.OpenRead(blob_value))
                            {
                                cmd.Parameters.AddWithValue(blob_column, File.ReadAllBytes(blob_value));
                            }
                        }
                        cmd.CommandText = sql;
                        rtncmd = cmd.ExecuteNonQuery();
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return rtncmd;
        }
...