Dasran Rajlui
Dasran Rajlui

Reputation: 9

No mapping exists from object type

    private void button5_Click(object sender, EventArgs e)
    {


        DataGridViewRow updatedrow = dataGridView1.Rows[chooseAnyRow];

        updatedrow.Cells[0].Value = SALUTATION.Text;
        updatedrow.Cells[1].Value = NAME.Text;
        updatedrow.Cells[2].Value = SEX.Text;
        updatedrow.Cells[3].Value = ETHNICITY.Text;
        updatedrow.Cells[4].Value = MARITALSTATUS.Text;
        updatedrow.Cells[5].Value = ICNUMBER.Text;
        updatedrow.Cells[6].Value = HPNUMBER.Text;
        updatedrow.Cells[7].Value = DOB.Text;
        updatedrow.Cells[8].Value = ADDRESS.Text;
        updatedrow.Cells[9].Value = STATE.Text;
        updatedrow.Cells[10].Value = CITY.Text;
        updatedrow.Cells[11].Value = POSTCODE.Text;
        updatedrow.Cells[12].Value = pictureBox1.Image;




        con = new SqlConnection(@"Data Source=dasranrajlui\sqlexpress;Initial Catalog=SESoriginal;Integrated Security=True");
        con.Open();
        com = con.CreateCommand();
        com.CommandType = CommandType.Text;
        com.CommandText = " update VoterRegistration set SALUTATION = '" + SALUTATION.Text +
                           "', NAME = '" + NAME.Text +
                           "', SEX = '" + SEX.Text +
                           "', ETHNICITY = '" + ETHNICITY.Text +
                           "', MARITALSTATUS = '" + MARITALSTATUS.Text +
                           "', IC_NUMBER = " + ICNUMBER.Text +
                           ",  HP_NUMBER = " + HPNUMBER.Text +
                           ",  DOB = '" + DOB.Text +
                           "', ADDRESS = '" + ADDRESS.Text +
                           "', STATE = '" + STATE.Text +
                           "', CITY = '" + CITY.Text +
                           "', POSTCODE = '" + POSTCODE.Text + 
                           "', VOTER_PIC = @VOTER_PIC where IC_NUMBER = " + ICNUMBER.Text;


        com.CommandType = CommandType.Text;
        com.Parameters.AddWithValue("@VOTER_PIC", pictureBox1.Image);
        com.Parameters.AddWithValue("@Salutation", SALUTATION.Text);
        com.Parameters.AddWithValue("@Name", NAME.Text);
        com.Parameters.AddWithValue("@Sex", SEX.Text);
        com.Parameters.AddWithValue("@Ethnicity", ETHNICITY.Text);
        com.Parameters.AddWithValue("@MaritalStatus", MARITALSTATUS.Text);
        com.Parameters.AddWithValue("@ICNumber", ICNUMBER.Text);
        com.Parameters.AddWithValue("@HPNumber", HPNUMBER.Text);
        com.Parameters.AddWithValue("@Dob", DOB.Text);
        com.Parameters.AddWithValue("@Address", ADDRESS.Text);
        com.Parameters.AddWithValue("@State", STATE.Text);
        com.Parameters.AddWithValue("@City", CITY.Text);
        com.Parameters.AddWithValue("@PostCode", POSTCODE.Text);

        if (pictureBox1.Image != null)
        {

            ms = new MemoryStream();
            pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
            byte[] photo_aray = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(photo_aray, 0, photo_aray.Length);
            com.Parameters.AddWithValue("@VOTER_PIC", photo_aray);
        }

        try
        {
            com.ExecuteNonQuery();
            MessageBox.Show("updated...");

            SALUTATION.Text = null;
            NAME.Text = null;
            SEX.Text = null;
            ETHNICITY.Text = null;
            MARITALSTATUS.Text = null;
            ICNUMBER.Text = null;
            HPNUMBER.Text = null;
            DOB.Text = null;
            ADDRESS.Text = null;
            STATE.Text = null;
            CITY.Text = null;
            POSTCODE.Text = null;

        }

        catch (Exception EX)
        {
            MessageBox.Show(EX + "NOT Updated");
        }

        finally
        {
            con.Close();
        }

}

The error shows:

no mapping exists from object type

Is it because my convert image is wrong? Or is there another way to update the image to my sql? The thing is I need to update my values in the image which I can display and update which can save to my database.

Upvotes: 0

Views: 99

Answers (3)

M B
M B

Reputation: 2326

Use the parameters you created and remove extra commas

   con = new SqlConnection(@"Data Source=dasranrajlui\sqlexpress;Initial Catalog=SESoriginal;Integrated Security=True");
    con.Open();
    com = con.CreateCommand();
    com.CommandType = CommandType.Text;
    com.CommandText = " update VoterRegistration set 
    SALUTATION @Salutation, 
    NAME = @Name, 
    SEX = @Sex, 
    ETHNICITY =@Ethnicity, 
    MARITALSTATUS = @MaritalStatus,
    IC_NUMBER = @ICNumber,  
    HP_NUMBER = @HPNumber,  
    DOB = @Dob, 
    ADDRESS = @Address,
    STATE = @State,
    CITY = @City, 
    POSTCODE = @PostCode 
    where IC_NUMBER = @ICNumber";

    com.CommandType = CommandType.Text;

    com.Parameters.AddWithValue("@Salutation", SALUTATION.Text);
    com.Parameters.AddWithValue("@Name", NAME.Text);
    com.Parameters.AddWithValue("@Sex", SEX.Text);
    com.Parameters.AddWithValue("@Ethnicity", ETHNICITY.Text);
    com.Parameters.AddWithValue("@MaritalStatus", MARITALSTATUS.Text);
    com.Parameters.AddWithValue("@ICNumber", ICNUMBER.Text);
    com.Parameters.AddWithValue("@HPNumber", HPNUMBER.Text);
    com.Parameters.AddWithValue("@Dob", DOB.Text);
    com.Parameters.AddWithValue("@Address", ADDRESS.Text);
    com.Parameters.AddWithValue("@State", STATE.Text);
    com.Parameters.AddWithValue("@City", CITY.Text);
    com.Parameters.AddWithValue("@PostCode", POSTCODE.Text);
   com.Parameters.AddWithValue("@ICNumber", ICNUMBER.Text);

Upvotes: 1

sujith karivelil
sujith karivelil

Reputation: 29036

Few more mistakes in your code; Corrected form is below

  1. You are using the parameterized queries in wrong way. you need to use @parameterName instead for passing the corresponding value. your query will opens a wide door for sql Injection.
  2. The , after POSTCODE =.. causing the current error, You need not to place , after the last column name`.

Finally you need to add com.Parameters.AddWithValue("@ICNumber", ICNUMBER.Text); two times since the command expecting 12 parameters

Code will be like the following:

com.CommandText = " update VoterRegistration set SALUTATION =@Salutation" +
              ", NAME = @Name" +
              ", SEX = @Sex" +
              ", ETHNICITY = @Ethnicity" +
              ", MARITALSTATUS = @MaritalStatus" +
              ", IC_NUMBER = @ICNumber" +
              ",  HP_NUMBER = @HPNumber" +
              ",  DOB = @Dob" +
              ", ADDRESS = @Address" +
              ", STATE = @State" +
              ", CITY = @City" +
              ", POSTCODE = @PostCode where IC_NUMBER =@ICNumber";


com.CommandType = CommandType.Text;

com.Parameters.AddWithValue("@Salutation", SALUTATION.Text);
com.Parameters.AddWithValue("@Name", NAME.Text);
com.Parameters.AddWithValue("@Sex", SEX.Text);
com.Parameters.AddWithValue("@Ethnicity", ETHNICITY.Text);
com.Parameters.AddWithValue("@MaritalStatus", MARITALSTATUS.Text);
com.Parameters.AddWithValue("@ICNumber", ICNUMBER.Text);
com.Parameters.AddWithValue("@HPNumber", HPNUMBER.Text);
com.Parameters.AddWithValue("@Dob", DOB.Text);
com.Parameters.AddWithValue("@Address", ADDRESS.Text);
com.Parameters.AddWithValue("@State", STATE.Text);
com.Parameters.AddWithValue("@City", CITY.Text);
com.Parameters.AddWithValue("@PostCode", POSTCODE.Text);
com.Parameters.AddWithValue("@ICNumber", ICNUMBER.Text);

Upvotes: 2

ScaisEdge
ScaisEdge

Reputation: 133390

I suggest that you remove the , before where and add a quote around ICNUMBER.text

  "', POSTCODE = '" + POSTCODE.Text + "' where IC_NUMBER = '" + ICNUMBER.Text  +"'";

Upvotes: 0

Related Questions