FileStream fs = new FileStream(fileInfo.FullName, FileMode.Open);
                                byte[] byteArray = new byte[fs.Length];
                                BinaryReader br = new BinaryReader(fs);
                               //fs.Read(byteArray, 0, Convert.ToInt32(fs.Length));
                                byteArray = br.ReadBytes(Convert.ToInt32(fs.Length));
                                //SqlParameter parameter = new SqlParameter("@photo",SqlDbType.Image);
                                //parameter.Value = byteArray;
                                //cmd.Parameters.Add(parameter);
                                cmd.Parameters.Add("@photo", SqlDbType.Image);
                                cmd.Parameters["@photo"].Value = byteArray;
                                String cmds = "insert into " + txbTableName.Text + "(sort_id,key_name,key_value,title,ext,file_blob,CreateTime,CreateUserName,state)values(1,'A0100','" + key_value + "','" + title + "','.jpg','@photo','" + System.DateTime.Now.ToString() + "','系统管理员',1)";
                               // SqlParameter parameter = new SqlParameter("@photo", SqlDbType.Image);
                                //parameter.Value = byteArray;
                                //cmd.Parameters.Add("@photo", SqlDbType.Image);
                                //cmd.Parameters["@photo"].Value = byteArray;
                                cmd.CommandText = cmds;
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                                fs.Close();
求高人指点..问什么插入进去的数据流不对..

解决方案 »

  1.   

    检查sql语句是否正确,检查字段类型和对应值是否一致。
      

  2.   

    @photo 前后 单引号去掉 
                                    String cmds = "insert into " + txbTableName.Text + "(sort_id,key_name,key_value,title,ext,file_blob,CreateTime,CreateUserName,state)values(1,'A0100','" + key_value + "','" + title + "','.jpg',@photo,'" + System.DateTime.Now.ToString() + "','系统管理员',1)";
     cmd.Parameters.Add("@photo", SqlDbType.Image);
                                    cmd.Parameters["@photo"].Value = byteArray;
      

  3.   

    问题补充:FileStream fs = new FileStream(fileInfo.FullName, FileMode.Open,FileAccess.Read);
                                    byte[] byteArray = new byte[fs.Length];
                                    fs.Read(byteArray, 0, Convert.ToInt32(fs.Length));
                                    SqlParameter parameter = new SqlParameter("@photo", SqlDbType.Image);
                                    parameter.Value = byteArray;
                                    cmd.Parameters.Add(parameter);
                                    String cmds = "insert into " + txbTableName.Text + "(sort_id,key_name,key_value,title,ext,file_blob,CreateTime,CreateUserName,state)values(1,'A0100','" + key_value + "','" + title + "','.jpg',@photo,'" + System.DateTime.Now.ToString() + "','系统管理员',1)";
                                    cmd.CommandText = cmds;
                                    cmd.ExecuteNonQuery();
                                    cmd.Parameters.Clear();
                                    fs.Close();
    现在 还不行,把@photo单引号去了还是不行,插进去的不是图片的流,很郁闷。。
      

  4.   

    你数据库中的Image用什么存储的?Image or 二进制流?
    如果是二进制流最好改成   SqlParameter parameter = new SqlParameter("@photo", SqlDbType.Binary);
      

  5.   

    哦,看了一下sql语句有问题
    ,'@photo',不加单引号。改成,@photo
      

  6.   

    结贴:找到问题了代码现在是这样的
     FileStream fs = new FileStream(fileInfo.FullName, FileMode.Open,FileAccess.Read);
                                    byte[] byteArray = new byte[fs.Length];
                                    fs.Read(byteArray, 0, Convert.ToInt32(fs.Length));
                                    String cmds = "insert into " + txbTableName.Text + "(sort_id,key_name,key_value,title,ext,file_blob,CreateTime,CreateUserName,state)values(1,'A0100','" + key_value + "','" + title + "','.jpg',@photo,'" + System.DateTime.Now.ToString() + "','系统管理员',1)";
                                    cmd.CommandText = cmds;
                                    SqlParameter parameter = new SqlParameter("@photo", SqlDbType.Image);
                                    parameter.Value = byteArray;
                                    cmd.Parameters.Add(parameter);  
                                    cmd.ExecuteNonQuery();
                                    cmd.Parameters.Clear();
                                    fs.Close();
    一定要等SQL语句实例化后才能 SqlParameter添加到SQLcommand里面,谢谢各位的帮忙。。