如何从 Oracle 数据库的多个表中检索数据,创建数据表,然后将此数据存储在 C# 中的 class 对象中?
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 数据库中检索多个 table 的数据。我使用 while (reader.Read())
从 table 中获取所有记录。但是,这次我只想获取一个特定的记录并将其存储在一个名为 production 的 class 对象中。我有以下代码:
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
中存储的数据创建一个生产对象。这怎么可能?非常感谢!
我使用了 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;
}
要访问数据表中存储的信息:
string serialNo = dt.Rows[0]["SERIENR"].ToString();
int productID = Convert.ToInt32(dt.Rows[0]["PRODUCT_ID"]);
希望对你也有帮助!
我正在尝试使用 C# 从 Oracle 数据库中检索多个 table 的数据。我使用 while (reader.Read())
从 table 中获取所有记录。但是,这次我只想获取一个特定的记录并将其存储在一个名为 production 的 class 对象中。我有以下代码:
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
中存储的数据创建一个生产对象。这怎么可能?非常感谢!
我使用了 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;
}
要访问数据表中存储的信息:
string serialNo = dt.Rows[0]["SERIENR"].ToString();
int productID = Convert.ToInt32(dt.Rows[0]["PRODUCT_ID"]);
希望对你也有帮助!