我有一個按鈕單擊執行的代碼。 它連接到一個sql數據庫並讀取兩個值。 我想要實現的是將這些代碼放在一個名爲'DataManager'的單獨的類中,然後從我的按鈕中單擊調用此類中的方法,並將兩個字符串放入我的文本框中。在獨立類中放置sql方法並返回多個字符串
string sReference = txtReference.Text;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_SELECT_CONSHEAD_BY_ENQUIRY_NUMBER";
cmd.Parameters.AddWithValue("@EnquiryNumber", sReference);
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
txtAccount.Text = sdr["Consignee"].ToString();
txtAccount_Printed.Text = sdr["Consignee_Printed"].ToString();
}
con.Close();
con.Dispose();
我在想我的方法應該是這個樣子
// Select from ConsHead by Reference Number
public string SelectConsHead(string sReference, out string sAccount, out string sAccount_Printed)
{
sAccount_Printed = "";
sAccount = "";
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConString"].ToString());
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_SELECT_CONSHEAD_BY_ENQUIRY_NUMBER";
cmd.Parameters.AddWithValue("@EnquiryNumber", sReference);
// Attach connection to command
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
sAccount = sdr["Consignee"].ToString();
sAccount_Printed = sdr["Consignee_Printed"].ToString();
}
con.Close();
con.Dispose();
return sAccount + sAccount_Printed;
}
,但我不知道如何調用該方法,並獲取相應的值到文本框。
不錯的答案。我只會建議使用DTO作爲返回值來迎合同時返回多個值。 – Terence
關於將結果打印到文本框的最後一點,只是一個問題。我在consHead中獲得了兩個值,並且你說我應該填充TextBox,如'myTextBox.Text = consHead;',但是這個dos不會告訴文本框應該填充兩個值中的哪一個。 –
您的線路「return sAccount + sAccount_Printed;」將返回一個值(兩個字符串的連接)。如果您需要分別返回兩個值,請按照Terence的建議創建另一個班級。這個類可能被稱爲'AccountDto'或類似的東西,並且應該包含兩個屬性,每個屬性一個。然後,而不是返回一個字符串,你需要在SelectConsHead方法內部創建一個Dto的實例,設置它的屬性,並返回它而不是一個字符串(注意這需要你更新你的方法定義)。然後通過dto的屬性訪問這些值。 – Ronnie