不会C#,也不会SqlServer,目前想使用C#向SqlServer插入图片,但是不知道该怎么写,请那位给一个例子!不胜感激! 

解决方案 »

  1.   

    http://dotnet.aspx.cc/article/ey1xldyv-pidf-43lo-1wfl-fmy5ale1f635/read.aspx
    http://dotnet.aspx.cc/article/2a5dd7c6-a45a-48ab-a2e8-342a29f17506/read.aspx
      

  2.   

    /// <summary>
            /// 将附件上传到指定表指定行的指定字段中
            /// </summary>
            /// <param name="aTbName">表名</param>
            /// <param name="aId">主键ID</param>
            /// <param name="aImgColumne">Image字段名称</param>
            /// <param name="aStream">流</param>
            /// <param name="conn">数据库连接</param>
            /// <returns>true-附件上传成功   false-附件上传失败</returns>
            public bool UpLoad(string aTbName,string aId,string aImgColumne,
                Stream aStream,SqlConnection conn)
            {
                SqlCommand setPtr;
                SqlCommand getPtr;
                int bufferLen;
                SqlCommand appendToFile;
                SqlParameter ptrParm;
                SqlParameter offsetParm;
                SqlParameter fileParm;
                BinaryReader br;
                int offset_ctr;
                //SqlConnection conn;            //conn = new Sys().GetDbConnection();
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                
                // 先将字段中的内容清空
                setPtr = new SqlCommand("update " + aTbName + " set " + aImgColumne + "=null WHERE id =  " + aId + " ", conn);
                setPtr.ExecuteNonQuery();            // image 列的文本指针值
                getPtr = new SqlCommand("SELECT textptr( " + aImgColumne + ") FROM " + aTbName + " WHERE id = " + aId + " ", conn);            // 设置缓存的长度
                bufferLen = 32768;            // 设置上传文件的 sql 语句
                appendToFile = new SqlCommand("UPDATETEXT " + aTbName + "."+aImgColumne+" @Pointer @Offset 0 @Bytes", conn);
                
                // 设置上传文件的文本指针
                ptrParm = appendToFile.Parameters.Add("@Pointer", SqlDbType.Binary, 16);
                ptrParm.Value = getPtr.ExecuteScalar();            // 文本列中的起始位置
                offsetParm = appendToFile.Parameters.Add("@Offset", SqlDbType.Int);
                offsetParm.Value = 0;            // 
                fileParm = appendToFile.Parameters.Add("@Bytes", SqlDbType.Image);
                br = new BinaryReader(aStream);            Byte[] buffer = br.ReadBytes(bufferLen);
                offset_ctr = 0;            try
                {
                    // 上传文件
                    while( buffer.Length > 0)
                    {
                        fileParm.Value = buffer;
                        appendToFile.ExecuteNonQuery();
                        offset_ctr += bufferLen;
                        offsetParm.Value = offset_ctr;
                        buffer = br.ReadBytes(bufferLen);
                    }
                }
                catch(SqlException)
                {
                    //throw ex;
                    return false;
                }
                finally
                {
                    br.Close();
                    conn.Close();
                }
                
                return true;
            }这是偶公用类中的一个方法,就是楼主说的这个东东
      

  3.   

    给楼主一个存图片二进制的例子吧:
    private void button1_Click(object sender, EventArgs e)
    {
    OpenFileDialog of = new OpenFileDialog();
    if (of.ShowDialog(this) == DialogResult.OK)
    {
    Image img = Image.FromFile(of.FileName);
    MemoryStream ms = new MemoryStream();
    img.Save(ms, img.RawFormat);
    string sql = "insert into Pictures (Name, Photo) Values(@Name, @Photo)";
    SqlConnection cn = new SqlConnection();
    cn.ConnectionString = this.txtConnect.Text;
    cn.Open();
    SqlCommand cm = cn.CreateCommand();
    cm.CommandText = sql;
    cm.Parameters.Add("@Name", SqlDbType.VarChar, 500).Value = of.FileName;
    cm.Parameters.Add("@Photo", SqlDbType.Image).Value = ms.GetBuffer();
    cm.ExecuteNonQuery();
    }
    }
      

  4.   

    对对,lovvver(www.notsoft.cn)说的对!谢谢![email protected]