У каждого из ваших фрагментов есть проблема.
Для реализации адаптера данных вы предоставили следующее:
SqlCommand cmd = new SqlCommand(SQL, conn);
conn.Open();
DataTable dt = new DataTable();
da.Fill(dt); //ERROR
Вы не связываете свой объект SqlCommand с вашим DataAdapter, поэтому он не знает, как заполнить ваш DataTable.
Что касается вашей реализации Data Reader,
// Call ExecuteReader to return a DataReader
SqlDataReader reader = cmd.ExecuteReader();
foreach(DataRow reader in dsRtn) //ERROR
{
richTextBox = richTextBox.Text + reader[0].ToString();
}
вы используете DataReader неправильно попробуйте это:
// Call ExecuteReader to return a DataReader
SqlDataReader reader = cmd.ExecuteReader();
while( reader.Read() )
{
richTextBox = richTextBox.Text + reader[0].ToString();
}