簡體   English   中英

將varchar值'System.Data.DataRowView'轉換為數據類型int時轉換失敗

[英]Conversion failed when converting the varchar value 'System.Data.DataRowView' to data type int

使用組合框從數據庫中檢索具有整數數據類型的記錄后,總是會出現以下錯誤:

將varchar值'System.Data.DataRowView'轉換為數據類型int時,轉換失敗。

當我替換查詢並檢索具有varchar數據類型的記錄時,它可以工作。

有人可以幫我如何修改我的代碼以獲得預期的輸出嗎?

這是我的代碼:

public void fillSupplier()
{
    SqlConnection conn = new SqlConnection("Data Source=STATION21\\SQLEXPRESS;Initial Catalog=mydb;Integrated Security=true");
    conn.Open();
    string query = "Select supID from Supplier";
    SqlCommand cmd= new SqlCommand(query,conn);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows.Count > 0) {
        cmbSupp.DataSource = dt;
        cmbSupp.DisplayMember = "supID";
        cmbSupp.ValueMember = "supID";
    }
}

private void cmbSupp_SelectedIndexChanged(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection("Data Source=STATION21\\SQLEXPRESS;Initial Catalog=mydb;Integrated Security=true");
    conn.Open();
    this.Refresh();
    string query = "Select * from Supplier where supID='"+cmbSupp.Text+"'";
    SqlCommand cmd = new SqlCommand(query,conn);
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read()) { 
        tbsName.Text = dr["supName"].ToString();
        tbsContact.Text = dr["supLocation"].ToString();
        tbsLoc.Text = dr["supContact"].ToString();
    }
}

替換為它(除去了單撇號,該單引號表示字符串文字)

string query = "Select * from Supplier where supID = " + cmbSupp.Text;

另外,請考慮參數化您的查詢。 您極不可能遇到這樣的問題,尤其是當您正在執行的查詢具有許多參數時。

string query = "Select * from Supplier where supID = @supID";
...
cmd.Parameters.AddWithValue("@supID", int.Parse(cmbSupp.Text));

這是一些很好的閱讀材料 ,並帶有示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM