[英]How to retrieve data from multiple tables from an Oracle database, create a datatable and then store this data in a class object in C#?
我正在嘗試使用 C# 從 Oracle 數據庫的多個表中檢索數據。我使用while (reader.Read())
從表中獲取所有記錄。 但是,這次我只想獲取一條特定的記錄,並將其存儲在 class 的一個 object 中,稱為 production。 我有以下代碼:
public DataTable GetProduction(string serialNr)
{
DataTable dataTable = new DataTable();
using (OracleConnection connection = new OracleConnection(connectionString))
{
string queryString = "SELECT E.SERIENR, R.PRODUCT_ID, R.LIJNSOORT, R.RATIO, R.AANTAL_PLAKKEN, R.EXTRA_INFO_ALFANUMERIEK_1, H.LAMELHOOGTE, R.LAMELAANTAL " +
"FROM RO_EXEMPLAAR E JOIN " +
"RO_ROOSTER R ON E.PRODUCT_ID = R.PRODUCT_ID JOIN " +
"RO_LAMELHOOGTE H ON H.LIJNSOORT = R.LIJNSOORT AND H.RATIO = R.RATIO " +
"WHERE E.SERIENR=" + serialNr;
OracleCommand command = new OracleCommand(queryString);
try
{
command.Connection = connection;
connection.Open();
OracleDataAdapter da = new OracleDataAdapter(command);
da.Fill(dataTable);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close();
}
}
return dataTable;
}
當我通過提供序列號執行此操作時,它會提示我標識符無效。 我檢查了 sql 聲明,對我來說似乎都是正確的。 我該如何解決這個問題? 我還想使用存儲在此DataTable
中的數據創建生產 object。 這怎么可能? 非常感謝!
我使用了 Oracle SQL 開發人員查詢工具,我意識到它不允許在查詢中間使用 +。 這就是我從queryString
中刪除 + 符號的原因。
因為我的目標是能夠將任何序列號傳遞到查詢中,所以我使用了command.Parameters.AddWithValue("serialNr", serialNr);
這是完整的代碼:
public DataTable GetProduction(string serialNr)
{
Production temp = null;
DataTable dataTable = new DataTable();
using (OracleConnection connection = new OracleConnection(connectionString))
{
string queryString = "SELECT E.SERIENR, R.PRODUCT_ID, R.LIJNSOORT, R.RATIO, R.AANTAL_PLAKKEN, R.EXTRA_INFO_ALFANUMERIEK_1, H.LAMELHOOGTE, R.LAMELAANTAL FROM RO_EXEMPLAAR E JOIN RO_ROOSTER R ON E.PRODUCT_ID = R.PRODUCT_ID JOIN RO_LAMELHOOGTE H ON H.LIJNSOORT = R.LIJNSOORT AND H.RATIO = R.RATIO WHERE E.SERIENR=:serialNr";
OracleCommand command = new OracleCommand(queryString);
try
{
command.Connection = connection;
connection.Open();
command.Parameters.AddWithValue("serialNr", serialNr);
OracleDataAdapter da = new OracleDataAdapter(command);
da.Fill(dataTable);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
connection.Close();
}
}
return dataTable;
}
要從 dataTable 訪問存儲的信息:
string serialNo = dt.Rows[0]["SERIENR"].ToString();
int productID = Convert.ToInt32(dt.Rows[0]["PRODUCT_ID"]);
我希望這對你也有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.