Как заполнить SQL таблицу при помощи DataTable
Мне нужно из таблицы DataGridView в форме заполнить SQL таблицу. Так, как у меня много разных таблиц с разным количеством столбцов и разными типами данных, заполнять каждую из них отдельной функцией было бы просто не рационально. По этому я решил отправлять их в нужную таблицу при помощи DataTable, но получил ошибку:
Параметр "@data" типа table должен иметь допустимое имя типа
Как я понял, для этого нужно создать свой тип CREATE TYPE typeName AS TABLE(столбцы с типами данных) и использовать процедуру SQL CREATE PROCEDDURE loadData @data typeName, но это будет означать отдельный тип и процедуру для каждой таблицы. Есть ли способ указывать их динамически или же другие пути решения?
C# код:
private void button1_Click(object sender, EventArgs e)
{
SqlDataReader sqlReader = null;
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
var dt = new DataTable();
dt = (DataTable)dataGridView1.DataSource;
try
{
using (SqlCommand command = new SqlCommand(@"DELETE FROM [kursova].[dbo].[" + comboBox1.SelectedItem.ToString()+ "]; INSERT INTO [kursova].[dbo].[" + comboBox1.SelectedItem.ToString()+ "] VALUES (@data)",sqlConnection))
{
command.Parameters.AddWithValue("@data", dt);
command.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (sqlReader != null)
sqlReader.Close();
}
}