使用OleDataAdapter遇到一点麻烦并获得字符串结果

时间:2015-05-04 15:06:24

标签: c# wpf oledbconnection

private string getPrinterPath()
{
     string query1 = "SELECT printerPath FROM Printers WHERE printerFloor = '" + comboBoxFloor.SelectedItem.ToString() + "' AND printerNumber = " + textBoxPrinterNumber.Text.ToString();
     DataTable dt = new DataTable();
     OleDbDataAdapter da = new OleDbDataAdapter();
     da.SelectCommand = new OleDbCommand(query1, myDataConnection);
     da.Fill(dt);            
}

我正在尝试获取从执行此查询返回的String。

有人可以告诉我如何从DataAdapter获取数据吗?

我知道我可以

foreach (DataRow dr in dt.Rows)
{
   Console.WriteLine(dr["printerPath"].ToString());
}

但我希望退回1件商品,这样我就不想在没有必要时循环运行

如果有更好的方法,请告诉我。 我也对如何"参数化"感到困惑。我的查询所以我没有直接传递值

1 个答案:

答案 0 :(得分:1)

我通常使用" ExecuteScalar"对于类似的东西,它只返回查询第一行的第一个结果。

对于参数,您可以将参数传递给命令。

它看起来像这样:

string query1,
    result;

query1 = "SELECT printerPath FROM Printers WHERE printerFloor = '?' AND printerNumber = ?";

using (OleDbConnection conn = new OleDbConnection(myDataConnection)) {
    OleDbCommand cmd = new OleDbCommand(query1, conn);
    cmd.Parameters.AddWithValue("PrinterFloor", comboBoxFloor.SelectedItem.ToString());
    cmd.Parameters.AddWithValue("PrinterNum", textBoxPrinterNumber.Text.ToString());
    conn.Open();
    result = cmd.ExecuteScalar();
}