Click here to Skip to main content
15,889,116 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I'm a beginner and sorry for what I am asking but I need help and enlightenment. So this is what I come up and what I got from a members article, and i'm having trouble understanding it. So this is what I made that causes error "Object reference not set to an instance of an object." :

What I have tried:

using System.Data.SqlClient;
using System.Drawing.Imaging;
using System.IO;

namespace Kenny
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=master;Integrated Security=True");
SqlCommand cmd;
SqlDataAdapter adapt;

public Form1()
{
InitializeComponent();
}


private void buttonsave_Click(object sender, EventArgs e)
{
Image myImage = pictureBox1.Image;
byte[] data;
using (MemoryStream ms = new MemoryStream())
{
myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
data = ms.ToArray();
}

con.Open();
cmd = new SqlCommand("INSERT INTO table(picture) VALUES (@image)", con);
{
cmd.Parameters.AddWithValue("@image", data);
cmd.ExecuteNonQuery();
}
con.Close();
}

private void buttonbrowseimage_Click(object sender, EventArgs e)
{
// open file dialog
OpenFileDialog open = new OpenFileDialog();
// image filters
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
// display image in picture box
Image myImage = new Bitmap(open.FileName);
}
}

private void buttonview_Click(object sender, EventArgs e)
{

cmd = new SqlCommand("SELECT picture FROM kenny WHERE Id=@id", con);
con.Open();
cmd.Parameters.AddWithValue("@ID", pictureBox1.Image);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
byte[] data = (byte[])reader["Picture"];
using (MemoryStream stream = new MemoryStream())
{
myImage = new Bitmap(stream);
}
}
}
}
}



what i have: picture box that responds to browse button and should also display image when view or loaded. save button for saving it to the DB.
Posted
Updated 23-Sep-17 10:02am

1 solution

Look here:
using (MemoryStream stream = new MemoryStream())
{
myImage = new Bitmap(stream);
}
You don't set the stream to any data, so there is no image...
Try using data in the MemoryStream constructor.
 
Share this answer
 
Comments
aaaaaaaaaaa222 24-Sep-17 4:29am    
I am now able to do inset but cant load the image back. what do you think I should do? thanks

private void buttonsave_Click(object sender, EventArgs e)
{
Image myImage = pictureBox1.Image;
byte[] data;
using (MemoryStream ms = new MemoryStream())
{
myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
data = ms.ToArray();
}

con.Open();
cmd = new SqlCommand("INSERT INTO table1(id,picture) VALUES (@id,@image)", con);
{
cmd.Parameters.AddWithValue("@image", data);
cmd.Parameters.AddWithValue("@id", textBox1.Text);
cmd.ExecuteNonQuery();
}
con.Close();
}

private void buttonbrowseimage_Click(object sender, EventArgs e)
{
// open file dialog
OpenFileDialog open = new OpenFileDialog();
// image filters
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
// display image in picture box
pictureBox1.Image = new Bitmap(open.FileName);
}
}

private void buttonloadview_Click(object sender, EventArgs e)
{
cmd = new SqlCommand("SELECT picture FROM table1 WHERE id=@ID", con);
con.Open();
cmd.Parameters.AddWithValue("@ID", textBox1.Text);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
byte[] data = (byte[])reader["Picture"];
using (MemoryStream stream = new MemoryStream(data))
{
Image myImage = pictureBox1.Image;
myImage = new Bitmap(stream);
}
}
con.Close();
}
OriginalGriff 24-Sep-17 4:43am    
What happens when you try?
What does the debugger say the data read back from the DB looks like?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900