从组合框到文本框

时间:2017-09-21 11:02:01

标签: c# sql datetime datetimepicker

我无法弄清楚错误或解决方案可能与我的代码有什么关系我只是告诉我,当我不使用任何整数字符串时它无法从字符串转换为int 我也无法弄清楚如何编写并将日期时间放回到datetimepicker中。

private void cbxProducts_SelectedIndexChanged(object sender, EventArgs e)
        {
            string constring = "Data Source = (LocalDB)\\MSSQLLocalDB; AttachDbFilename = \"C:\\Users\\hannes.corbett\\Desktop\\Barcode Scanning\\Barcode Scanning\\BarcodeDB.mdf\"; Integrated Security = True";
            string Query = "SELECT * FROM Products where Name='" + cbxProducts.Text + "' ; ";
            SqlConnection conDataBase = new SqlConnection(constring);
            SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase);
            SqlDataReader myReader;
            try
            {
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();

                string sBarcode = myReader.GetString("Barcodes");
                string sName = myReader.GetString("Name");
                var sDate = myReader.GetDateTime("EDate");
                string sQuantity = myReader.GetInt32("Quantity")).ToString();
                string sPrice = myReader.GetInt32("Price")).ToString();
                tbxBar.Text = sBarcode;
                tbxName.Text = sName;
                sDate = dateDate.Value;
                tbxPrice.Text = sPrice;
                tbxQua.Text = sQuantity;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

编辑:Error Message

编辑2:我收到错误消息

  

“当没有数据可用时,无效尝试读取”

我的数据库中的所有字符串都有数据,但我仍然会收到此错误

2 个答案:

答案 0 :(得分:2)

您必须使用列的索引而不是名称

{
   type: "ADD_EVENT",
   event: { event_id: 1, name: "Chelsea v Arsenal" }
}

类似这样的事情

string sBarcode = myReader.GetString(IndexOfBarcodesColumn);

或者您可以直接从阅读器

使用字段名称
string sBarcode = myReader.GetString(0);
string sName = myReader.GetString(1);
var sDate = myReader.GetDateTime(2);
string sQuantity = myReader.GetInt32(3).ToString();
string sPrice = myReader.GetInt32(4).ToString();

答案 1 :(得分:0)

像这样它可以使用列名,或者如果你想使用columnIndex,就像@MtwStark在他的回答中描述的那样。

string sBarcode = myReader["Barcodes"].ToString();
string sName = myReader["Name"].ToString();
var sDate = myReader["EDate"];
string sQuantity = myReader["Quantity"].ToString();
string sPrice = myReader["Price"].ToString();

关注以下错误消息

  

“当没有数据可用时,无效尝试读取”

您必须先致电myReader.Read()。 (就像有人问this question

while (myReader.Read()) {
    //do here whatever you want with the records returned from myReader
    string sBarcode = myReader["Barcodes"].ToString();
    string sName = myReader["Name"].ToString();
    var sDate = myReader["EDate"];
    string sQuantity = myReader["Quantity"].ToString();
    string sPrice = myReader["Price"].ToString();
    ...
}