现在的位置: 首页 > 综合 > 正文

Silvelight保存Image图片到SQL数据库的Image类型里面(亲自测试)

2013年09月16日 ⁄ 综合 ⁄ 共 4555字 ⁄ 字号 评论关闭

首先创建好数据库

读取数据库那些代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

namespace Site
{
    public class SQlHelper
    {
        string conStr = @"Data Source=.;Initial Catalog=MyKTV;Integrated Security=True";

        public Ima Get() {
            Ima i = null;
            using (SqlConnection conn = new SqlConnection(this.conStr))
            {
                conn.Open();
                
                    string proc = "select * from img";
                    SqlCommand cmd = new SqlCommand(proc, conn);
                    i = new Ima() { Img = (byte[])cmd.ExecuteScalar() };
                    
                    
                
                
            }
            return i;
        }

        public int Add(Ima model)
        {
            int count = 0;
            SqlParameter[] paras = new SqlParameter[] 
                { 
                    new SqlParameter("@img",model.Img){SqlDbType=SqlDbType.Image},
                };
            using (SqlConnection conn = new SqlConnection(this.conStr))
            {
                conn.Open();
                SqlTransaction st = conn.BeginTransaction();
                try
                {
                    string proc = "rSave";
                    SqlCommand cmd = new SqlCommand(proc, conn);
                    cmd.Transaction = st;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddRange(paras);
                    count = cmd.ExecuteNonQuery();
                    st.Commit();
                }
                catch (Exception)
                {
                    st.Rollback();
                }
                return count;
            }
        }
    }
}

 

Webservice

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace Site
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public int Add(Ima img) {
            return new SQlHelper().Add(img);
        }
        [WebMethod]
        public Ima Get()
        {
            return new SQlHelper().Get();
        }
    }
}

Silverlight里面的帮助类,写在XAML页面的那个程序集里面

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;


namespace SaveImage
{
    public class UploadHelper
    {
        public delegate void Complete(byte[] Image);
        public event Complete UploadComplete;

        //读取
        public void ConverterImageByte()
        {
            OpenFileDialog openFileDialog = new OpenFileDialog()
            {
                Filter = "Images (*.BMP;*.JPG;)|*.BMP;*.JPG;|All Files(*.*)|*.*",
                Multiselect = false
            };
            if (openFileDialog.ShowDialog() == true)
            {
                FileInfo mapInfo = openFileDialog.File;

                string[] mapFullName = mapInfo.Name.Split('.');

                if (!(mapFullName[mapFullName.Length - 1].Contains("jpg")))
                {
                    MessageBox.Show("图片不是jpg格式!");
                    return;
                }

                FileStream inputStream = mapInfo.OpenRead();
                int readSize = 204800;
                if (inputStream.Length > readSize)
                {
                    MessageBox.Show("图片大小不能超过200KB!");
                    return;
                }

                byte[] imageb = new byte[inputStream.Length];
                inputStream.Read(imageb, 0, imageb.Length);
                inputStream.Close();

                if (this.UploadComplete != null)
                {
                    this.UploadComplete(imageb);
                }
            }
        }

        //获取
        public ImageBrush ConverterImageBrush(byte[] Image)
        {
            //MemoryStream inputStream = new MemoryStream(Image, true);
            //inputStream.Write(Image, 0, Image.Length);
            System.IO.Stream inputStream = new System.IO.MemoryStream(Image);
            System.Windows.Media.Imaging.BitmapImage image = new System.Windows.Media.Imaging.BitmapImage();
            image.SetSource(inputStream);
            return new ImageBrush() { ImageSource = image, Stretch = Stretch.Uniform };
        }
    }
}

 

上传的时候先注册事件,在使用,获取的话可以直接诶new 出对象获取

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SaveImage
{
    public partial class MainPage : UserControl
    {
        UploadHelper u = new UploadHelper();
        public MainPage()
        {
            InitializeComponent();
            //使用时候必须注册这个事件
            u.UploadComplete += new UploadHelper.Complete(u_UploadComplete);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            //点击上传
            u.ConverterImageByte();
        }
        //执行Webservice里面的添加方法
        void u_UploadComplete(byte[] Image)
        {
            ServiceReference1.WebService1SoapClient s = new ServiceReference1.WebService1SoapClient();
            s.AddAsync(new ServiceReference1.Ima() { Img = Image });
            s.AddCompleted += new EventHandler<ServiceReference1.AddCompletedEventArgs>(s_AddCompleted);
        }
        //返回成功或者失败
        void s_AddCompleted(object sender, ServiceReference1.AddCompletedEventArgs e)
        {
            MessageBox.Show(e.Result.ToString());
        }

        
        //获取数据库里面的图片
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            
            ServiceReference1.WebService1SoapClient s = new ServiceReference1.WebService1SoapClient();
            s.GetAsync();
            s.GetCompleted += new EventHandler<ServiceReference1.GetCompletedEventArgs>(s_GetCompleted);
        }

        void s_GetCompleted(object sender, ServiceReference1.GetCompletedEventArgs e)
        {
            //获取成功,显示
            this.LayoutRoot.Background=u.ConverterImageBrush(e.Result.Img);
        }
    }
}

 

 

对于调用Webservice出现跨域问题的 可以在这里解决

http://blog.csdn.net/qq873113580/article/details/8478980

抱歉!评论已关闭.