如题

解决方案 »

  1.   

    这个是我在我的机器上面作的测试,好像没有什么问题,你看一下.针对你的SQL你换一下命名空间和使用sqlclient就可以了
    (三个button ,一个文本输入,一个picturebox)private void Form1_Load(object sender, System.EventArgs e)
    {
    this.button2.Enabled = false;
    this.button2.Text = "上传至库";
    this.button1.Text = "上传文件";
    this.button3.Text = "根据ID显示图片";this.strSqlConn = @"Data Source=""F:\C#\ImageToDb\bin\Debug\db.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";";
    }private void button2_Click(object sender, System.EventArgs e)
    {
    if (this.textBox1.Text != string.Empty )
    {
    try
    {
    fs = new FileStream( this.filename,FileMode.Open );
    bytes = new byte[(int)fs.Length];
    int intFile = fs.Read( bytes,0,bytes.Length);
    if (intFile>0)
    {
    conn = new OleDbConnection( this.strSqlConn );
    this.strSqlCmd = "Insert into tab (Img,title,des) values (@ph,@title,@des)" ;
    cmd = new OleDbCommand( strSqlCmd,conn );
    conn.Open();
    cmd.Parameters.Add("@ph",OleDbType.Binary);
    cmd.Parameters.Add("@title",OleDbType.VarChar);
    cmd.Parameters.Add("@des",OleDbType.LongVarWChar);
    cmd.Parameters["@title"].Value = "标题";
    cmd.Parameters["@ph"].Value = this.bytes;
    cmd.Parameters["@des"].Value = "这个是备注说明字段";
    int intS = cmd.ExecuteNonQuery();
    if (intS<0)
    {
    MessageBox.Show("更新失败");
    }
    MessageBox.Show("成功更新");
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show( ex.Message );
    }
    finally
    {
    conn.Close();
    fs.Flush();
    fs.Close();
    }
    }
    else
    {
    MessageBox.Show("请输入准考证号");
    }
    }private void button3_Click(object sender, System.EventArgs e)
    {
    try
    {
    conn = new OleDbConnection( this.strSqlConn);
    this.strSqlCmd = "Select img From tab Where id = " + this.textBox1.Text + "";
    conn.Open();
    cmd = new OleDbCommand( strSqlCmd,conn );
    object obj = cmd.ExecuteScalar();
    this.bytes = (byte[])obj;
    using ( MemoryStream ms = new MemoryStream( bytes,0,bytes.Length ))
    {
    Bitmap bmp = new Bitmap( ms );
    this.pictureBox1.Image = bmp;
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message,"出错了!",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    finally
    {
    conn.Close();
    }
    }
      

  2.   

    保存
    通过:pictureboxy读,另存也可从PICTURE,我没写存的,只是在PICTURE中显示
    sql="";//保存SQL
    SqlCommand cmd=new SqlCommand(sql,connect);
    MemoryStream s = new MemoryStream();
    picPhoto.Image.Save(s,System.Drawing.Imaging.ImageFormat.Jpeg);
    byte[] b = s.ToArray();
    s.Close();
    cmd.Parameters.Add("@i",SqlDbType.Image,(int)b.Length);
    cmd.Parameters["@i"].Value=b;
    cmd.ExecuteNonQuery();private void Readphoto(string id)
    {
     try
      { //读取图象
        string ls_sql=“”插入数据库的语句
        this.picPhoto.Image=null;
        this.picPhoto.Refresh();
        SqlCommand cmd=new SqlCommand(ls_sql,connetct);
        SqlDataReader reader=cmd.ExecuteReader();
        while(reader.Read())
          {
            byte[] b = (byte[])reader[0];
            MemoryStream s = new MemoryStream(b);
            Bitmap bmp = new Bitmap(s);
            System.Drawing.Image image = bmp;
            picPhoto.Image = image;
            s.Close();
            }
         reader.Close();
       }
    catch(Exception ex)
    {
       MessageBox.Show(ex.Message);
    }
    }
      

  3.   

    FileInfo fi = new FileInfo(@"c:\1.jpg");
    FileStream ffs = File.OpenRead(@"c:\1.jpg");
    byte[] bytes = new byte[(int)ffs.Length];
    string cmd = "update test1 set t5 = @t5";
    System.Data.SqlClient.SqlConnection sc = new System.Data.SqlClient.SqlConnection(this.sqlConnection1.ConnectionString);
    System.Data.SqlClient.SqlCommand sql = new System.Data.SqlClient.SqlCommand(cmd,sc);
    sql.Parameters.Clear();
    sql.Parameters.Add("@t5",bytes);
    sc.Open();
    try
    {
    sql.ExecuteNonQuery();
    }
    catch(System.Exception ee)
    {MessageBox.Show(ee.Message,ee.TargetSite.ToString());}
    sc.Close(); this.sqlDataAdapter2.Fill(this.dataSet11,"temp_err");
    this.sqlDataAdapter1.Fill(this.dataSet11,"test1"); object ph = this.dataSet11.test1.Rows[0]["t5"];
    byte[] bt = (byte[])ph;
    FileStream fs = File.Create(@"c:\22.jpg",bt.Length);
    fs.Write(bt,0,bt.Length);
    fs.Close();
    MessageBox.Show(bt.Length.ToString());22.jpg的大小和1.jpg一样,但是为什么不能被作为图片浏览?在ie或者acdsee里面显示不出图片来。