Я пытаюсь прочитать таблицы в операторе SQL. Имена таблиц извлекаются из списка.
Пользователи выбирают имя таблицы, для которой они хотят просматривать данные, и, в свою очередь, мой метод будет читать + визуализировать + экспортировать эту таблицу.
Проблема связана с именем таблицы в качестве значения c. Изначально я написал код на Iron Python, и все было в порядке.
Теперь я перевожу этот код на C# и столкнулся с проблемой синтаксиса (очевидно, адрес сервера / логин, размещенный здесь, не реальные).
Имена таблиц заполняются в listBox1 отдельным методом.
private void rEADSELECTEDTABLE_Click(object sender, EventArgs e)
{
string tableName = listBox1.GetItemText(listBox1.SelectedItem);
MessageBox.Show(" Table Selected: " + tableName);
try
{
string sqlConnectionString;
myConnectionString = @"server=000.00.000.0;database=myDatabase;uid=myUser;password=myPassword";
mySQL = new SqlConnection(myConnectionString);
mySQL.Open();
SqlCommand myCommand2 = new SqlCommand("SELECT * FROM @myTable", mySQL);
SqlParameter param = new SqlParameter();
param.ParameterName = "@myTable";
param.Value = tableName;
myCommand2.Parameters.Add(param);
SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.SelectCommand = myCommand2;
DataSet dataSet = new DataSet();
myAdapter.Fill(dataSet);
List<string> rows = new List<string>();
List<string> rowData = new List<string>();
foreach (DataTable table in dataSet.Tables)
foreach (DataRow row in table.Rows)
foreach (DataColumn column in table.Columns)
if (row[column] != null)
rowData.Add(row[column].ToString());
foreach (String s in rowData)
Console.WriteLine(s);
mySQL.Close();
}
}
Когда я запускаю код, я получаю эту ошибку:
System.Data.SqlClient.SqlException (0x80131904): необходимо объявить табличную переменную "@myTable".
Если я использую имя таблицы stati c, все работает хорошо.
SqlCommand myCommand2 = new SqlCommand("SELECT * FROM TABLE_NAME", mySQL);
SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.SelectCommand = myCommand2;
Помощь с благодарностью.