Я пытаюсь заполнить DropDownList, выбрав другое значение DropDownlList, но оно возвращает несоответствие типа данных в выражении критерия.

Несоответствие типа данных в выражении критерия. Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.OleDb.OleDbException: несоответствие типа данных в выражении критерия.

Ошибка источника:

Line 77:             int Subject_ID = Convert.ToInt32(DropDown_SubjectName.SelectedValue);
Line 78:             OleDbCommand cmd = new OleDbCommand("select * from Assignment_Details where Subject_ID = " + Subject_ID, con);
Line 79:             cmd.ExecuteNonQuery();
Line 80:             cmd.CommandType = CommandType.Text;
Line 81: 

public partial class WebForm2 : System.Web.UI.Page
{
    OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E://Project//VirtualClassRoomDB//VirtualClassroomDB.accdb");

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindSubjectdropdown();
        }
    }

    protected void BindSubjectdropdown()
    {
        //conenction path for database
        con.Open();
        OleDbCommand cmd = new OleDbCommand("select * from Subject_Details", con);
        cmd.CommandType = CommandType.Text;
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
        catch
        {
        }
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DropDown_SubjectName.DataSource = ds;
        DropDown_SubjectName.DataTextField = "Subject_Name";
        DropDown_SubjectName.DataValueField = "Subject_ID";
        DropDown_SubjectName.DataBind();
        DropDown_SubjectName.Items.Insert(0, new ListItem("--Select--", "0"));
        DropDown_AssignmentName.Items.Insert(0, new ListItem("--Select--", "0"));
    }

    protected void Button_Ass_Add_Click(object sender, EventArgs e)
    {
        OleDbCommand cmd = new OleDbCommand("insert into Assignment_Details(Assignment_Name,Assignment_Description,Subject_ID,Upload_by,Assignment_Path) values('" + TextBox_AssignementName.Text + "','" + TextBox_AssignmentDescription.Text + "','" + DropDown_Subject.SelectedValue + "','Maths','" + FileUpload_Assignment.FileName + "')", con);
        cmd.CommandType = CommandType.Text;
    }

    protected void DropDown_SubjectName_SelectedIndexChanged(object sender, EventArgs e)
    {
        con.Open();
        int Subject_ID = Convert.ToInt32(DropDown_SubjectName.SelectedValue);
        OleDbCommand cmd = new OleDbCommand("select * from Assignment_Details where Subject_ID = " + Subject_ID, con);
        cmd.ExecuteNonQuery();
        cmd.CommandType = CommandType.Text;

        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        DropDown_AssignmentName.DataSource = ds;
        DropDown_AssignmentName.DataTextField = "Assignment_Name";
        DropDown_AssignmentName.DataValueField = "Assignment_ID";
        DropDown_AssignmentName.DataBind();
        DropDown_AssignmentName.Items.Insert(0, new ListItem("--Select--", "0"));
    }
}

person Mahesh    schedule 29.02.2016    source источник


Ответы (1)


cmd.ExecuteNonQuery(); 

это не то, что вы хотите. Именно так вы запускаете запрос действия, а не запрос выбора. У вас также есть эта строка слишком поздно:

cmd.CommandType = CommandType.Text;

он должен появиться перед выполнением запроса.

person nicomp    schedule 29.02.2016