table columns are System.DBNull after inserting them into database












0















I have a table which looks like this:



CREATE TABLE largeObject(
fileName varchar2(50) primary key,
fileContent blob,
encrypthedFileContent blob
);


And this is my class:



public class Blob
{
public string FileName { get; private set; }
public byte Binary { get; private set; }
public byte EncryptedBinary { get; private set; }
public Blob(string fileName, byte binary, byte encryptedBinary)
{
this.FileName = fileName;
this.Binary = binary;
this.EncryptedBinary = encryptedBinary;
}

public Blob(string FileName)
{
this.FileName = FileName;
}

public override string ToString()
{
return FileName;
}

}


Using this code i add and load the table values from my database:



    private static byte encrypth(byte input)
{
PasswordDeriveBytes pdb = new PasswordDeriveBytes("mycoolpassword", new byte { 0x43, 0x87, 0x23, 0x72 });
MemoryStream ms = new MemoryStream();
Aes aes = new AesManaged();
aes.Key = pdb.GetBytes(aes.KeySize / 8);
aes.IV = pdb.GetBytes(aes.BlockSize / 8);
CryptoStream cs = new CryptoStream(ms,
aes.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(input, 0, input.Length);
cs.Close();
return ms.ToArray();
}

public static Blob ConvertToBlob(string filePath)
{

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); //A stream of bytes that represnts the binary file
BinaryReader reader = new BinaryReader(fs); //The reader reads the binary data from the file stream
byte binary = reader.ReadBytes((int)fs.Length); //Bytes from the binary reader stored in BlobValue array

fs.Close();
reader.Close();
return new Blob(filePath, binary,encrypth(binary));
}

public static void SaveToDb(string filePath)
{
Blob blob = ConvertToBlob(filePath);

OleDbCommand cmd = new OleDbCommand("insert into largeObject values(:fileName, :fileContent, :encrypthedFileContent)", conn);

cmd.Parameters.Add(new OleDbParameter(":fileName", Path.GetFileName(blob.FileName)));
cmd.Parameters.Add(new OleDbParameter(":fileContent", blob.Binary));
cmd.Parameters.Add(new OleDbParameter(":encrypthedFileContent", blob.EncryptedBinary));

cmd.ExecuteNonQuery();
}


Now here is the problem. After I add two files in the database the other files which I try to add are System.DBNull and I dont know why. After I add my second-third file I add the next file nothing happens (no error, etc). But after I try to receive the files I get the error that they are System.DBNull.



How do I know that they are System.DBNull?
I tried retreiving every file(largeobject) from the database and I added a if statement whether the byte are null: if ((reader["fileContent"] != System.DBNull.Value) && (reader["encrypthedFileContent"] != System.DBNull.Value))
. It turns out I was right. The only files(largeobjects) I received were the files which I added as first. (because they are not saved as System.DBNull)



What am I doing wrong?










share|improve this question



























    0















    I have a table which looks like this:



    CREATE TABLE largeObject(
    fileName varchar2(50) primary key,
    fileContent blob,
    encrypthedFileContent blob
    );


    And this is my class:



    public class Blob
    {
    public string FileName { get; private set; }
    public byte Binary { get; private set; }
    public byte EncryptedBinary { get; private set; }
    public Blob(string fileName, byte binary, byte encryptedBinary)
    {
    this.FileName = fileName;
    this.Binary = binary;
    this.EncryptedBinary = encryptedBinary;
    }

    public Blob(string FileName)
    {
    this.FileName = FileName;
    }

    public override string ToString()
    {
    return FileName;
    }

    }


    Using this code i add and load the table values from my database:



        private static byte encrypth(byte input)
    {
    PasswordDeriveBytes pdb = new PasswordDeriveBytes("mycoolpassword", new byte { 0x43, 0x87, 0x23, 0x72 });
    MemoryStream ms = new MemoryStream();
    Aes aes = new AesManaged();
    aes.Key = pdb.GetBytes(aes.KeySize / 8);
    aes.IV = pdb.GetBytes(aes.BlockSize / 8);
    CryptoStream cs = new CryptoStream(ms,
    aes.CreateEncryptor(), CryptoStreamMode.Write);
    cs.Write(input, 0, input.Length);
    cs.Close();
    return ms.ToArray();
    }

    public static Blob ConvertToBlob(string filePath)
    {

    FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); //A stream of bytes that represnts the binary file
    BinaryReader reader = new BinaryReader(fs); //The reader reads the binary data from the file stream
    byte binary = reader.ReadBytes((int)fs.Length); //Bytes from the binary reader stored in BlobValue array

    fs.Close();
    reader.Close();
    return new Blob(filePath, binary,encrypth(binary));
    }

    public static void SaveToDb(string filePath)
    {
    Blob blob = ConvertToBlob(filePath);

    OleDbCommand cmd = new OleDbCommand("insert into largeObject values(:fileName, :fileContent, :encrypthedFileContent)", conn);

    cmd.Parameters.Add(new OleDbParameter(":fileName", Path.GetFileName(blob.FileName)));
    cmd.Parameters.Add(new OleDbParameter(":fileContent", blob.Binary));
    cmd.Parameters.Add(new OleDbParameter(":encrypthedFileContent", blob.EncryptedBinary));

    cmd.ExecuteNonQuery();
    }


    Now here is the problem. After I add two files in the database the other files which I try to add are System.DBNull and I dont know why. After I add my second-third file I add the next file nothing happens (no error, etc). But after I try to receive the files I get the error that they are System.DBNull.



    How do I know that they are System.DBNull?
    I tried retreiving every file(largeobject) from the database and I added a if statement whether the byte are null: if ((reader["fileContent"] != System.DBNull.Value) && (reader["encrypthedFileContent"] != System.DBNull.Value))
    . It turns out I was right. The only files(largeobjects) I received were the files which I added as first. (because they are not saved as System.DBNull)



    What am I doing wrong?










    share|improve this question

























      0












      0








      0








      I have a table which looks like this:



      CREATE TABLE largeObject(
      fileName varchar2(50) primary key,
      fileContent blob,
      encrypthedFileContent blob
      );


      And this is my class:



      public class Blob
      {
      public string FileName { get; private set; }
      public byte Binary { get; private set; }
      public byte EncryptedBinary { get; private set; }
      public Blob(string fileName, byte binary, byte encryptedBinary)
      {
      this.FileName = fileName;
      this.Binary = binary;
      this.EncryptedBinary = encryptedBinary;
      }

      public Blob(string FileName)
      {
      this.FileName = FileName;
      }

      public override string ToString()
      {
      return FileName;
      }

      }


      Using this code i add and load the table values from my database:



          private static byte encrypth(byte input)
      {
      PasswordDeriveBytes pdb = new PasswordDeriveBytes("mycoolpassword", new byte { 0x43, 0x87, 0x23, 0x72 });
      MemoryStream ms = new MemoryStream();
      Aes aes = new AesManaged();
      aes.Key = pdb.GetBytes(aes.KeySize / 8);
      aes.IV = pdb.GetBytes(aes.BlockSize / 8);
      CryptoStream cs = new CryptoStream(ms,
      aes.CreateEncryptor(), CryptoStreamMode.Write);
      cs.Write(input, 0, input.Length);
      cs.Close();
      return ms.ToArray();
      }

      public static Blob ConvertToBlob(string filePath)
      {

      FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); //A stream of bytes that represnts the binary file
      BinaryReader reader = new BinaryReader(fs); //The reader reads the binary data from the file stream
      byte binary = reader.ReadBytes((int)fs.Length); //Bytes from the binary reader stored in BlobValue array

      fs.Close();
      reader.Close();
      return new Blob(filePath, binary,encrypth(binary));
      }

      public static void SaveToDb(string filePath)
      {
      Blob blob = ConvertToBlob(filePath);

      OleDbCommand cmd = new OleDbCommand("insert into largeObject values(:fileName, :fileContent, :encrypthedFileContent)", conn);

      cmd.Parameters.Add(new OleDbParameter(":fileName", Path.GetFileName(blob.FileName)));
      cmd.Parameters.Add(new OleDbParameter(":fileContent", blob.Binary));
      cmd.Parameters.Add(new OleDbParameter(":encrypthedFileContent", blob.EncryptedBinary));

      cmd.ExecuteNonQuery();
      }


      Now here is the problem. After I add two files in the database the other files which I try to add are System.DBNull and I dont know why. After I add my second-third file I add the next file nothing happens (no error, etc). But after I try to receive the files I get the error that they are System.DBNull.



      How do I know that they are System.DBNull?
      I tried retreiving every file(largeobject) from the database and I added a if statement whether the byte are null: if ((reader["fileContent"] != System.DBNull.Value) && (reader["encrypthedFileContent"] != System.DBNull.Value))
      . It turns out I was right. The only files(largeobjects) I received were the files which I added as first. (because they are not saved as System.DBNull)



      What am I doing wrong?










      share|improve this question














      I have a table which looks like this:



      CREATE TABLE largeObject(
      fileName varchar2(50) primary key,
      fileContent blob,
      encrypthedFileContent blob
      );


      And this is my class:



      public class Blob
      {
      public string FileName { get; private set; }
      public byte Binary { get; private set; }
      public byte EncryptedBinary { get; private set; }
      public Blob(string fileName, byte binary, byte encryptedBinary)
      {
      this.FileName = fileName;
      this.Binary = binary;
      this.EncryptedBinary = encryptedBinary;
      }

      public Blob(string FileName)
      {
      this.FileName = FileName;
      }

      public override string ToString()
      {
      return FileName;
      }

      }


      Using this code i add and load the table values from my database:



          private static byte encrypth(byte input)
      {
      PasswordDeriveBytes pdb = new PasswordDeriveBytes("mycoolpassword", new byte { 0x43, 0x87, 0x23, 0x72 });
      MemoryStream ms = new MemoryStream();
      Aes aes = new AesManaged();
      aes.Key = pdb.GetBytes(aes.KeySize / 8);
      aes.IV = pdb.GetBytes(aes.BlockSize / 8);
      CryptoStream cs = new CryptoStream(ms,
      aes.CreateEncryptor(), CryptoStreamMode.Write);
      cs.Write(input, 0, input.Length);
      cs.Close();
      return ms.ToArray();
      }

      public static Blob ConvertToBlob(string filePath)
      {

      FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); //A stream of bytes that represnts the binary file
      BinaryReader reader = new BinaryReader(fs); //The reader reads the binary data from the file stream
      byte binary = reader.ReadBytes((int)fs.Length); //Bytes from the binary reader stored in BlobValue array

      fs.Close();
      reader.Close();
      return new Blob(filePath, binary,encrypth(binary));
      }

      public static void SaveToDb(string filePath)
      {
      Blob blob = ConvertToBlob(filePath);

      OleDbCommand cmd = new OleDbCommand("insert into largeObject values(:fileName, :fileContent, :encrypthedFileContent)", conn);

      cmd.Parameters.Add(new OleDbParameter(":fileName", Path.GetFileName(blob.FileName)));
      cmd.Parameters.Add(new OleDbParameter(":fileContent", blob.Binary));
      cmd.Parameters.Add(new OleDbParameter(":encrypthedFileContent", blob.EncryptedBinary));

      cmd.ExecuteNonQuery();
      }


      Now here is the problem. After I add two files in the database the other files which I try to add are System.DBNull and I dont know why. After I add my second-third file I add the next file nothing happens (no error, etc). But after I try to receive the files I get the error that they are System.DBNull.



      How do I know that they are System.DBNull?
      I tried retreiving every file(largeobject) from the database and I added a if statement whether the byte are null: if ((reader["fileContent"] != System.DBNull.Value) && (reader["encrypthedFileContent"] != System.DBNull.Value))
      . It turns out I was right. The only files(largeobjects) I received were the files which I added as first. (because they are not saved as System.DBNull)



      What am I doing wrong?







      c# sql oracle types dbnull






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 '18 at 17:48









      kokos123kokos123

      95110




      95110
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53417882%2ftable-columns-are-system-dbnull-after-inserting-them-into-database%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53417882%2ftable-columns-are-system-dbnull-after-inserting-them-into-database%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith