Mostrando entradas con la etiqueta Silverlight. Mostrar todas las entradas
Mostrando entradas con la etiqueta Silverlight. Mostrar todas las entradas

sábado, 12 de marzo de 2011

Consumir Servicio Web desde Silverlight

Debido a que he buscado y buscado por mucho tiempo en Google un método para guardar datos en Silverlight, me he dado la tarea de crear un servicio web para enviar los datos a una base de datos para poder hacer una inserción de registros.
Creacion del Servicio Web.

En el servicio web agregamos una referencia a MySql.Data.MySqlClient
Creamos el siguiente método web

[WebMethod]
public void insDocuments(int doc_type, string refr, byte[] imagen, int usr, DateTime dt, int st)
{


//System.Windows.Media.Imaging.BitmapImage bImg = new System.Windows.Media.Imaging.BitmapImage();

MySqlConnection cnn = new MySqlConnection("server=localhost;User Id=root;database=db_scanning");
MySqlCommand cmd = new MySqlCommand();
cnn.Open();
string sql = "insert into documents(id_document,doc_type,doc_reference,doc_scanned,user_id,mod_date,state)" +
" VALUES(@id_document,@doc_type,@doc_reference,@doc_scanned,@user_id,@mod_date,@state)";
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
cmd.Connection = cnn;
cmd.Parameters.Add("@id_document",MySqlDbType.VarChar).Value=getCode(doc_type);
cmd.Parameters.Add("@doc_type", MySqlDbType.Int32).Value = doc_type;
cmd.Parameters.Add("@doc_reference", MySqlDbType.VarChar).Value = refr;
cmd.Parameters.Add("@doc_scanned", MySqlDbType.LongBlob).Value = imagen;
cmd.Parameters.Add("@user_id", MySqlDbType.Int32).Value = usr;
cmd.Parameters.Add("@mod_date", MySqlDbType.Datetime).Value = dt;
cmd.Parameters.Add("@state", MySqlDbType.Int32).Value = st;
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
cnn.Close();
}

Despues lo invocamos desde la aplicacion Silverlight agregando la respectiva referencia a servicio.

OpenFileDialog op = new OpenFileDialog();
op.ShowDialog();
BitmapImage imageSource = new BitmapImage();
imageSource.SetSource(op.File.OpenRead());
FileStream fst = op.File.OpenRead();
byte[] bytes = new byte[fst.Length];
fst.Read(bytes, 0, bytes.Length);

svc.insDocumentsAsync(2, "REF", bytes, 1, DateTime.Today, 1);
Con esto ya podemos trabajar insertando registros a una base de datos utilizando Silverlight.