table columns are System.DBNull after inserting them into database
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
add a comment |
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
add a comment |
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
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
c# sql oracle types dbnull
asked Nov 21 '18 at 17:48
kokos123kokos123
95110
95110
add a comment |
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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