사용하기 전에 dtSource 및 dtDestination에서 일부 값을 가져와야합니다. 하지만 데이터베이스 내부에 저장된 일부 값이 있더라도 내부에서 값을 검색 할 수없는 것 같습니다. foreach가 일부 값을 검색하는 데 유용합니까? 나는 그것을 디버깅했지만 dtSource와 dtDestination에서 문자열로 전달하기 전에 값을 검색하지 않는 것으로 보입니다.DataTable에서 특정 셀을 추출하고 콘솔 응용 프로그램에서 사용할 값을 검색하는 방법
static void Main(string[] args)
{
// Retrieve the connection string from Config table in master database
string strConnFromConfig = getConfigDetails(SalesKey.DBConnection);
DataTable dtSource = getSource(strConnFromConfig);
DataTable dtDestination = getDestination(strConnFromConfig);
DataTable dtRate = getRate(strConnFromConfig);
DataTable dtCode = getCode(strConnFromConfig);
//Having this issue here
foreach (DataRow rwSrc in dtSource.Rows)
{
foreach (DataRow rwDest in dtDestination.Rows)
{
string src = rwSrc["Value"].ToString();
string dest = rwDest["Value"].ToString();
ExcelTemplate XLT = new ExcelTemplate();
XLT.Open(src);
DataBindingProperties dataProps = XLT.CreateDataBindingProperties();
XLT.BindData(dtCode, "Code", dataProps);
XLT.BindData(dtRate, "Rate", dataProps);
XLT.Process();
XLT.Save(dest);
}
}
}
// Retrieve the config details from master database
static string getConfigDetails(SalesKey salesKey)
{
string strCon = ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(strCon);
if (sqlConnection.State == ConnectionState.Closed)
sqlConnection.Open();
string cSQL = "SELECT Value FROM dbo.COMMON_CONFIG WHERE Value = @value";
SqlCommand sqlCommand = new SqlCommand(cSQL, sqlConnection);
sqlCommand.Parameters.AddWithValue("@value", salesKey.ToString()); // Need to cast the enumeration value as string
DataTable dataTable = new DataTable();
dataTable.Load(sqlCommand.ExecuteReader());
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
if (dataTable.Rows.Count > 0)
{
return dataTable.Rows[0]["Value"].ToString();
}
else
{
return string.Empty;
}
}
// Generic method for sending in the SQL query to retrieve the specified dataset
static DataTable getData(string connection, string query)
{
SqlConnection sqlConnection = new SqlConnection(connection);
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);
//SqlDataReader reader = sqlCommand.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(sqlCommand.ExecuteReader());
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
return dataTable;
}
static DataTable getSource(string connection)
{
connection = ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
string src = @"C:\Users\administrator.EBSDLAB\Desktop\Examples\Sales\currency.xlsx";
string IdSQL = "SELECT VALUE FROM dbo.COMMON_CONFIG WHERE VALUE = '" + src + "'";
return getData(connection, IdSQL);
}
static DataTable getDestination(string connection)
{
connection = ConfigurationManager.ConnectionStrings["Master"].ConnectionString;
string dest = @"C:\Users\administrator.EBSDLAB\Desktop\Examples\Sales\output.xlsx";
string IdSQL = "SELECT VALUE FROM dbo.COMMON_CONFIG WHERE VALUE = '" + dest + "'";
return getData(connection, IdSQL);
}
'선택 값에서 dbo.COMMON_CONFIG WHERE VALUE = some_value'는 이미 값을 알고 있음을 의미합니다. 따라서 DB에서 선택할 필요가 없습니다. 'SELECT ID FROM ID = 1' 결과가'1' 일 때'SELECT 1'이나'dest = 1'을하거나 필드 이름을 바꿀 수 있습니다 : D – mirkobrankovic
@mirkobrankovic은 변경되지 않았습니다. 오류를 알고있다. 그리고 return dataTable.Rows [0] [ "Value"]에서 인덱스를 변경하면 ToString(); 값이 저장된 실제 인덱스에 대해 위치 3에 행이 없다는 오류를 반환합니다. 따라서 데이터가 내부에 저장되지 않는다는 의미입니까? – CHOCOx33