SQL表连接占位符c#

时间:2017-03-23 11:24:37

标签: c# sql

我想知道是否有人可以帮助我。我正在尝试使用sql语句填充组合框。我能够做到这一点,然后我想基于第一个组合框的占位符填充下一个组合框,我将必须连接表一起用于SQL命令。我希望这是有道理的。这是我的代码,如果有人可以建议帮助,那将不胜感激!

对于第一个组合框

private void btn_Customer_Click(object sender, EventArgs e)
{
  conn = new OleDbConnection(conString);
  string sqlcommand = @"SELECT custid, title + "" "" + firstname + "" ""+ lastname as name FROM Customer;";

  daItems = new OleDbDataAdapter(sqlcommand, conn);
  daItems.Fill(dtItems);

  cmbo_Customer.DataSource = dtItems;
  cmbo_Customer.DisplayMember = "name";
  cmbo_Customer.ValueMember = "custid";
  cmbo_Customer.SelectedIndex = -1;
}

现在我想根据custID占位符填充以下组合框。

private void btn_ISA_Click(object sender, EventArgs e)
{
  try
  {
    OleDbCommand dbcmd = conn.CreateCommand();
    dbcmd.CommandText = @"SELECT name FROM account INNER JOIN product ON account.prodid = product.prodid ;";

    dbcmd.Parameters.AddWithValue("name", cmbo_ISA.SelectedValue);

  }
  catch (Exception ex)
  {
    // write exception info to log or anything else
    MessageBox.Show("Error occured!");
  }
}

1 个答案:

答案 0 :(得分:1)

根据评论,您的第二个查询:

SELECT p.name 
FROM account a
  INNER JOIN product p ON a.prodid = p.prodid 
WHERE a.custId = @custId

(使用表名的别名以便更容易消除歧义)需要:

@custId

其中OleDbCommand是您添加到@name的参数的占位符。

但是 SQL中参数的语法(@name)依赖于数据库引擎(例如,SQL Server使用?但是Oracle使用public function setSchoolConnection($id) { $school = School::find($id); if ( $school ) { config(['database.mysql' => [ 'database' => $school->database, 'username' => $school->username, 'password' => $school->password ]]); } } 并依赖于参数 1 的排序,并且您没有指定要定位的数据库引擎。

1 自从我上次使用Oracle以来,Oracle可能已经改变了这一点。