Image processing with WEB REST C #

1

I am making a mobile application with Android Studio and I synchronize it through a WEB REST in C #, the problem is that when synchronizing the images between SQLite and SQL Server, it sends me an error in the data types in my Web Rest. I clarify that I receive everything in JSON format.

BD SQL

CREATE TABLE EVIDENCIA (
IDEVID int NOT NULL PRIMARY KEY IDENTITY(1,1),
EVID varBinary(max)  NOT NULL,
FPER  varchar(25) NOT NULL
); 

Code C #

public string InsertarEvidencia(Evidencia evidencia)
    {
        SqlConnection con = new SqlConnection(cadenaConexion);
        con.Open();
        string sql = "INSERT INTO EVIDENCIA (EVID, FPER) VALUES (@EVID, @FPER);  SELECT SCOPE_IDENTITY();";
        SqlCommand cmd = new SqlCommand(sql, con);
        String e = evidencia.EVID.ToString();
        cmd.Parameters.Add("@EVID", System.Data.SqlDbType.VarBinary).Value = e;
        cmd.Parameters.Add("@FPER", System.Data.SqlDbType.VarChar).Value = evidencia.FPER;
        var insertedID = cmd.ExecuteScalar();
        string d = Convert.ToString(insertedID);
        return d;
    }

    public List<Evidencia> ObtenerEvidencia()
    {
          List<Evidencia> lista = new List<Evidencia>();
        SqlConnection con = new SqlConnection(cadenaConexion);
        con.Open();
        string sql = "SELECT IDEVID, EVID, FPER FROM EVIDENCIA";
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataReader reader =  cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
        while (reader.Read())
        {
            Evidencia cli = new Evidencia();
            cli = new Evidencia();
            cli.IDEVID = reader.GetInt32(0);
            cli.EVID = (byte[])reader["EVID"];
            cli.FPER = reader.GetString(2);
            lista.Add(cli);
        }
        return lista;
    }

Evidence Class

public class Evidencia
    {
        public int IDEVID { get; set; }
        public byte[] EVID { get; set; }
        public string FPER { get; set; }
    }

Controller

public class EvidenciaController : Controller
    {
        // GET: AEvidencia/Evidencia
        EvidenciaManeager evidenciaManeager = new EvidenciaManeager();

        public EvidenciaController()
        {
        }


        [HttpGet]
        public JsonResult GetEvidencia()
        {
            return Json(new GetEvidencia
            {
                estado = 1,
                evidencia = evidenciaManeager.ObtenerEvidencia()
            }, JsonRequestBehavior.AllowGet);
        }


        public JsonResult PostEvidencia(int? id, Evidencia item)
        {
            switch (Request.HttpMethod)
            {
                case "POST":

                    return Json(new PostEvidencia
                    {
                        estado = "1",
                        mensaje = "Creacion Exitosa",
                        idEvidencia = evidenciaManeager.InsertarEvidencia(item),
                    }, JsonRequestBehavior.AllowGet);

            }

            return Json(new { Error = true, Message = "Operación HTTP desconocida" });
        }
    }

Android Code

Database

   public void onCreate(SQLiteDatabase db) {
   String CREATE_TABLE_CONTACTS="CREATE TABLE " + TABLE_CONTACTS + "("
           + KEY_ID +" INTEGER PRIMARY KEY,"
           + KEY_FNAME +" TEXT,"
           + KEY_POTO1  +" BLOB" + ")";
    db.execSQL(CREATE_TABLE_CONTACTS);
}

public void addEvidencia(Contact contact){
  SQLiteDatabase db = this.getReadableDatabase();
    ContentValues values=new ContentValues();

    values.put(KEY_FNAME, contact.getFName());
    values.put(KEY_POTO1, contact.getImage1() );
    db.insert(TABLE_CONTACTS, null, values);
    db.close();
}

class Contact

public Contact(String fname, byte[] img1){

    this._fname = fname;
    this._img1 = img1;

}

MainActivity

private byte[] profileImage(Bitmap b) {

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    b.compress(Bitmap.CompressFormat.PNG, 0, bos);
    return bos.toByteArray();

}

// function to get values from the Edittext and image
private void getValues() {
    f_name = fname.getText().toString();
    photo1 = profileImage(bp1);
}

//Insert data to the database
private void addEvidencia() {
    getValues();

    db.addEvidencia(new Contact(f_name, photo1));
    Toast.makeText(getApplicationContext(), "Saved successfully", Toast.LENGTH_LONG).show();
}

Answer Get

Post Reply I sent a post

The answer is:

    
asked by Gabriela Villa Angeles N3ZM3 A 29.10.2018 в 20:08
source

0 answers