数据库是sqlserver 2000,在程序里面通过sqlhelper.cs将数据加入到数据库中,先定义一个string sqladd变量,存入要插入的信息 如sqladd = “insert into table values('”;sqladd += name.text;等等 就这样,我有个数据库字段是image类型的,我把它转化问byte数组 bytdata,如何将这个数组的数据信息加入到这个sqladd中,使这些数据通过SqlHelper.ExecuteNonQuery(conn.str, CommandType.Text, sqladd)能同时加入到数据库中?谢谢了

解决方案 »

  1.   

     
    SqlConnection conn=new SqlConnection("");  
                   
    string sql="insert into table values(@name,@image)"SqlCommand cmd=new SqlCommand(sql,conn); SqlParameter[] parames = new SqlParameter[]{new SqlParameter("name", SqlDbType.NVarChar),
    new SqlParameter("image", SqlDbType.image)};
    parames[0]="aaaaa";
    parames[1]=//image conver to byte[];cmd.Pamameter.add(parames );
    cmd.Connection.Open();
    cmd.ExecuteNonQuery();
    数据库存图片类型时byte类型的所以你要转换一下。FileStream什么的。就看你程序的需求了。
             
                  
    或者用helper.cs
                        ///execute sql.
                        reader = ExecuteReader(conn, CommandType.Text, sql, parames);
      

  2.   

    可以直接插入:
    TestTable: ID, UserName, UserPhoto
    直接用: Insert into TestTable(UserName,UserPhoto) values ('Hello', PhotoData)
    其中:PhotoData是byte[]类型。
      

  3.   

    3楼的基本正确,但是用 cmd.Pamameter.add()方法只能用于单个参数,
    应该改成cmd.Pamameter.AddRange(parames); 
      

  4.   

    3楼的方法中 SqlParameter[] parames 必须要列出所要添加的所有的项吗?可不可以只定义其中的那个Image类型的那一项?谢谢了
      

  5.   

          parames[0] = bytdata; 无法将类型“byte[]”隐式转换为“System.Data.SqlClient.SqlParameter”  怎么有这个错误啊??晕
      

  6.   

    3楼的方法OK 只需要把parames[0] = bytdata;改为parames[0].value = bytdata;即可 呵呵 谢谢啊
      

  7.   

    如何判断插入数据库的二进制数组是正确的图片信息? 像 0x4749463839611E001900F70000000000181818212121106910545454747455737372049B0900B3002B9C2B01D80106FA062AFB2A4A9C4A4CFD4C67FF67949439AEAE2ED4D439919152B3B3498E8E6CADAD63DADA45D5D56D888888B0B087B2B2B2D6D68CCECEA5000000FFFFFF000000000000000000000000000000000000
    这种信息是正确的吗?0x47494638396132046D05F60000FA0604F244A254BA5B0493B8F5DF0DA4228FCCCCCC6215877DCEE3FD980083208D00FFFFCCCC00B5B5B5CC3366C9C9C9EBEBEBDCDCDCFAFAFABABABAC4C4C4F5F5F5E1E1E1F0F0F0CC6666D3D3D3BFBFBFCECECEE6E6E6D8D8D8CC9999884A67CC6699EDD513CC9966661C84B46C00CCCC99
    这是其中的2个数据 怎么图片不一样 前面有很多类似的地方啊?是不是我转换的方式不对啊?这是我的方法
            //Image 转换为 byte[]数组
            public static byte[] imageToByteArray(System.Drawing.Image imageIn)
            {
                MemoryStream ms = new MemoryStream();
                imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                return ms.ToArray();
            }
      

  8.   

    当然不一样了。每张图片能一样吗= =!记得给分啊SqlConnection conn=new SqlConnection("");   
                    
    string sql="select image form table" SqlCommand cmd=new SqlCommand(sql,conn); cmd.Connection.Open(); 
    SqlDataReader reader=cmd.ExecuteDataReader();
    while(reader.read())
    {
      byte[] image=(byte[])reader["image"];
     FileStream gif=new FileStream("iamge path",FileMode.Create);
    gif.Writer(image,0,image.lenth);
    看看是不是和原来的图片一样不就成了
    }
      

  9.   

    谢谢16楼了 如何判断存在数据库中的Image 字段是否为空?               
     DataSet ds_dish = SqlHelper.ExecuteDataset(conn.str, CommandType.Text, "select Food_Pic,Food_Note from TS14_dish where Food_Name ='" + foodname + "'");
     if (ds_dish.Tables[0].Rows[0]["Food_Pic"].ToString() != null ) //判断这个菜是否有图片信息
    怎么我发现它即使为空 也继续往下执行啊?