MemoryStream ms = new MemoryStream();
Image image = null;
ms = new MemoryStream((byte[])reader["C_LOGO"]);
image = Image.FromStream(ms); //客户LOGO图片--->老是提示参数无效
panel_logo.BackgroundImage = image;
解决方案 »
- System.ArgumentNullException: 值不能为空
- C#资源文件运用的问题~
- 求助:帮我解决给100分,关于C#自绘窗体的问题!
- XML读取的问题
- 使用自建的异常类时出错,错误原因:捕获或抛弃的类型必须从 System.Exception 派生.
- 高手救我啊..............
- 请问各位大虾MSDN英文版有没有办法转换成中文版?
- 请问:能否直接将XSL文件或HTML文件转化成PDF文件?(急!!)
- 请问如何取得rowstate为delete的记录中的内容?不会报错误:can't access the deleted row through the row
- 想做这样一个功能,大家能不能给个思路
- 父页面弹出模态子页面后,如何实现子页面关闭后自动执行一个父页面中的事件?
- C#中的“事件”的概念到底有什么用?什么时候会用到?
是插入的问题插入的时候也用MemoryStream 的吧!
用GetBuffer()方法来来得到图片的byte[]形式插入数据库
读取就没问题了
{
Stream ms;
byte[] picbyte;
OpenFileDialog ofdSelectPic = new OpenFileDialog();
ofdSelectPic.ShowDialog();
string f = ofdSelectPic.FileName; ms = ofdSelectPic.OpenFile();
picbyte = new byte[ms.Length];
ms.Position = 0;
ms.Read(picbyte, 0, Convert.ToInt32(ms.Length)); SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=s");
conn.Open();
string sqlstring = "insert into ttt(image) values(@img)";
SqlCommand cmd = new SqlCommand(sqlstring, conn);
cmd.Parameters.Add("@img", SqlDbType.Image, picbyte.Length).Value = picbyte; cmd.ExecuteNonQuery();
conn.Close();
} private void button2_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=s");
conn.Open();
string strSql = "select image from ttt ";
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
MemoryStream ms = new MemoryStream((byte[])sdr[0]);
Image image = Image.FromStream(ms);
sdr.Close();
conn.Close();
pictureBox1.Image = image;
}
按钮1插入,按钮2提取,我这段代码在CSDN上已经挣了N多分了,你参考一下。
存入:
byte[] c_picbyte = new byte[0];
private void btn_c_openfile_Click(object sender, EventArgs e)
{
if (ofdSelectPic.ShowDialog() == DialogResult.OK)
{
if ((ofdSelectPic.OpenFile()) != null)
{
if (this.pic_C_Logo.Image != null)
{
this.pic_C_Logo.Image.Dispose();
this.pic_C_Logo.Image = null;
}
pic_C_Logo.Image = Image.FromFile(ofdSelectPic.FileName); //显示图片
FileStream fs = new FileStream(ofdSelectPic.FileName, FileMode.OpenOrCreate, FileAccess.Read);
c_picbyte = new byte[fs.Length];
fs.Read(c_picbyte, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
//c_ms.Close();
}
} }
private void SaveDB()
{
SqlParameter[] parameters =
{
new SqlParameter("U_C_COMPANYNAME",SqlDbType.VarChar,255),
new SqlParameter("U_C_LOGO",SqlDbType.Image,c_picbyte.Length),
new SqlParameter("U_C_ADDRESS",SqlDbType.VarChar,255),
new SqlParameter("U_C_TELEPHONE",SqlDbType.VarChar,255),
new SqlParameter("U_C_LINKER",SqlDbType.VarChar,255),
new SqlParameter("U_COMPANYNAME",SqlDbType.VarChar,255),
new SqlParameter("U_LOGO",SqlDbType.Image,picbyte.Length),
new SqlParameter("U_ADDRESS",SqlDbType.VarChar,255),
new SqlParameter("U_TELEPHONE",SqlDbType.VarChar,255),
new SqlParameter("U_LINKER",SqlDbType.VarChar,255),
new SqlParameter("U_SOFTNAME",SqlDbType.VarChar,255),
new SqlParameter("U_INITPASSWORD",SqlDbType.VarChar,255), new SqlParameter("U_A_DOMAINNAME",SqlDbType.VarChar,255),
new SqlParameter("U_A_SERVERNAME",SqlDbType.VarChar,255),
new SqlParameter("U_A_USERNAME",SqlDbType.VarChar,255),
new SqlParameter("U_A_PASSWORD",SqlDbType.VarChar,255),
new SqlParameter("U_A_FILEDIRECTORY",SqlDbType.VarChar,255),
new SqlParameter("U_SYS_TYPE",SqlDbType.VarChar,10),
};
MES.BusBll.Public.MES_Encrpytion Encrpytion = new MES.BusBll.Public.MES_Encrpytion(MES.BusBll.Public.EncrypType.COMPANY);
//Encrpytion.Encrypto(this.textBox1.Text); //加密
parameters[0].Value = Encrpytion.Encrypto(txt_c_company.Text);
parameters[1].Value = c_picbyte;
parameters[2].Value = Encrpytion.Encrypto(txt_c_address.Text);
parameters[3].Value = Encrpytion.Encrypto(txt_c_tel.Text);
parameters[4].Value = Encrpytion.Encrypto(txt_c_linker.Text);
parameters[5].Value = Encrpytion.Encrypto(txt_company.Text);
parameters[6].Value = picbyte;
parameters[7].Value = Encrpytion.Encrypto(txtaddress.Text);
parameters[8].Value = Encrpytion.Encrypto(txt_tel.Text);
parameters[9].Value = Encrpytion.Encrypto(txt_linker.Text);
parameters[10].Value = Encrpytion.Encrypto(txtSOFTNAME.Text);
parameters[11].Value = Encrpytion.Encrypto(utxtpsw.Text); parameters[12].Value = ""; //Encrpytion.Encrypto(txtdomain.Text);
parameters[13].Value = ""; //Encrpytion.Encrypto(txtservername.Text);
parameters[14].Value = ""; //Encrpytion.Encrypto(txtuser.Text);
parameters[15].Value = ""; //Encrpytion.Encrypto(txtuserpwd.Text);
parameters[16].Value = ""; //Encrpytion.Encrypto(txtcatalog.Text);
parameters[17].Value = Common.SystemType;
DAO.GetDAO().ExecuteProc("P_T_CO_COMPANY_UPDATE", parameters);
}
string sql = string.Format(@"select * from {0}.T_CO_COMPANY where sys_type = '{1}'", Common.DBUserName,Common.SystemType);
SqlDataReader reader = DAO.GetDAO().GetDataReader(sql);
if (!reader.Read())
{
reader.Close();
return;
}
MemoryStream ms=new MemoryStream();
Image image = null;
byte[] by = new byte[0];
if (reader["C_LOGO"].ToString() != "") //&& (reader["C_LOGO"].ToString() != "System.Byte[]")
{
ms = new MemoryStream((byte[])reader["C_LOGO"]);
if (ms.Capacity > 0)
{
image = Image.FromStream(ms); panel_logo.BackgroundImage = image;
}
}
image = Image.FromStream(ms);
FileStream fs = new FileStream(ofdSelectPic.FileName, FileMode.OpenOrCreate, FileAccess.Read);
c_picbyte = new byte[fs.Length];
fs.Read(c_picbyte, 0, System.Convert.ToInt32(fs.Length)); 这里错了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~假设有一个流,内存流或文件流均可叫做ms
你的目标图片是img,这是一个bitmapimg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte [] 你的目标数组= ms.GetBuffer();不要用read方法读流就对了
pic_C_Logo.Image = Image.FromFile(ofdSelectPic.FileName); //显示图片
FileStream fs = new FileStream(ofdSelectPic.FileName, FileMode.OpenOrCreate, FileAccess.Read);
c_picbyte = new byte[fs.Length];
fs.Read(c_picbyte, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
这样读图是没问题的.
SqlParameter parm = new SqlParameter("@img",SqlDbType.Image,picbyte.Length);
parm.value=picbyte;
cmd.Parameters.Add(parm);
cmd.ExecuteNonQuery();
这样就是正确的,我测试过