Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新内部连接的位置条件_C#_Mysql_Sql_Where - Fatal编程技术网

C# 更新内部连接的位置条件

C# 更新内部连接的位置条件,c#,mysql,sql,where,C#,Mysql,Sql,Where,我无法继续执行下一个任务,我的问题是我不知道如何将DGV的返回值与表匹配 以下是我如何加载带有值/显示成员的组合框: SqlConnection con = new SqlConnection("Data Source=DESKTOP-5V9PS33\\SQLEXPRESS;Initial Catalog=Farmacia;Integrated Security=True"); con.Open(); SqlCommand sc = new SqlCommand("SELECT ID,Produ

我无法继续执行下一个任务,我的问题是我不知道如何将DGV的返回值与表匹配

以下是我如何加载带有值/显示成员的组合框:

SqlConnection con = new SqlConnection("Data Source=DESKTOP-5V9PS33\\SQLEXPRESS;Initial Catalog=Farmacia;Integrated Security=True");
con.Open();
SqlCommand sc = new SqlCommand("SELECT ID,ProductName FROM Product", con);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("ProductName", typeof(string));
dt.Load(reader);
cmbProductName.ValueMember = "ID";
cmbProductName.DisplayMember = "ProductName";
cmbProductName.DataSource = dt;
cmbProductName.Text = "";
这就是我如何从数据库和DGV中添加价值的方法:

sc.Parameters.AddWithValue("@SupplierID", cmbSupplier.SelectedValue.ToString());
sc.Parameters.AddWithValue("@ProductNameID", cmbProductName.SelectedValue.ToString());
sc.Parameters.AddWithValue("@Quantity",txtQuantity.Text);
sc.Parameters.AddWithValue("@UnitPrice", txtUnitPrice.Text);
sc.Parameters.AddWithValue("@Markup", txtMarkup.Text);
sc.Parameters.AddWithValue("@SellingPrice", txtSellingPrice.Text);
sc.ExecuteNonQuery();
以下是我的“接收订单”更新代码:

填充DGV加载/刷新:

private void frmPurchaseOrder_Load_1(object sender, EventArgs e)
{
    try
    {
        SqlConnection con = new SqlConnection("Data Source=DESKTOP-5V9PS33\\SQLEXPRESS;Initial Catalog=Farmacia;Integrated Security=True");
        con.Open();
        SqlCommand sc = new SqlCommand("SELECT Supplier,ProductName,PurchaseOrder.Quantity,PurchaseOrder.UnitPrice,PurchaseOrder.Markup,PurchaseOrder.SellingPrice FROM PurchaseOrder Inner Join Supplier ON Supplier.ID = PurchaseOrder.SupplierID Inner Join Product ON Product.ID = PurchaseOrder.ProductNameID", con);
        SqlDataReader reader;
        reader = sc.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Columns.Add("Supplier", typeof(string));
        dt.Columns.Add("ProductName", typeof(string));
        dt.Columns.Add("Quantity", typeof(int));
        dt.Columns.Add("UnitPrice", typeof(float));
        dt.Columns.Add("Markup", typeof(float));
        dt.Columns.Add("SellingPrice", typeof(float));
        dt.Load(reader);

        for (int x = 0; x < dt.Rows.Count; x++)
        {
            string Supplier = dt.Rows[x].ItemArray[0].ToString();
            string ProductName = dt.Rows[x].ItemArray[1].ToString();
            string Quantity = dt.Rows[x].ItemArray[2].ToString();
            string UnitPrice = dt.Rows[x].ItemArray[3].ToString();
            string Markup = dt.Rows[x].ItemArray[4].ToString();
            string SellingPrice = dt.Rows[x].ItemArray[5].ToString();
            string[] row = { Supplier, ProductName, Quantity, UnitPrice, Markup, SellingPrice };
            dgvCategory.Rows.Add(row);
        }
        con.Close();
    }
    catch (SystemException ex)
    {
        MessageBox.Show(ex.ToString());
    }
}
private void frmPurchaseOrder\u Load\u 1(对象发送方,事件参数e)
{
尝试
{
SqlConnection con=newsqlconnection(“数据源=DESKTOP-5V9PS33\\SQLEXPRESS;初始目录=Farmacia;集成安全性=True”);
con.Open();
SqlCommand sc=new SqlCommand(“选择供应商、产品名称、采购订单.数量、采购订单.单价、采购订单.标记、采购订单.SellingPrice FROM PurchaseOrder内部加入供应商对供应商的报价。ID=PurchaseOrder.SupplierID内部加入产品对产品的报价=PurchaseOrder.ProductNameID”,con);
SqlDataReader;
reader=sc.ExecuteReader();
DataTable dt=新的DataTable();
添加(“供应商”,类型(字符串));
添加(“产品名称”,类型(字符串));
添加(“数量”,类型(int));
添加(“单价”,类型(浮动));
添加(“标记”,类型(浮动));
增加(“卖出价格”,类型(浮动));
dt.负载(读卡器);
对于(int x=0;x
我的DGV将只返回“产品”的字符串或名称

这是我的全产品表


窗口窗体设计

我已经有一段时间没有处理过此类应用程序了,如果有什么地方不完全正确,我深表歉意

当然会返回产品名称,因为
dgvCategory.SelectedCells[1]
是该行的第二个单元格,它对应于查询中的第二个字段,即
ProductName
。您需要进行一些修改:

同时获取
ID
列,例如:

选择Product.ID作为pid,供应商,…

并将其添加到数据表中(
pid
是我在上面选择的别名):

dt.Columns.Add(“pid”,typeof(int))

然后添加ìd值作为数据行的标记:

row.Tag = dt["pid"].value;
dgvCategory.Rows.Add(row);
最后,您可以使用此ID(在行上另存为
标记
):


请注意,我无法测试上述任何一项,因此您可能需要做一些研究

如果我理解正确,您的问题是您不知道如何获取ProductNameID?填充DGV的代码是什么?嘿@GiorgosAltanis检查我的新编辑。标记方法不一定是最好的;您可以使用产品id值在dgv中添加一个
隐藏的
列,然后访问此值(请参阅相关文档了解如何访问)。谢谢兄弟!非常有用。通过这种方法,我成功地规范了所有表。顺便说一句,tablename.column作为列名对我帮助很大!谢谢
row.Tag = dt["pid"].value;
dgvCategory.Rows.Add(row);
SqlCommand sc = new SqlCommand("DELETE From PurchaseOrder WHERE ProductNameID = '"+dgvCategory.SelectedCells[1].RowIndex.Tag.ToString()+"'", con);