AZHAR SAYYAD Ответов: 1

Как хранить несколько записей в базе данных в ASP.NET


Здравствуйте, я хочу вставить строку gridview в базу данных. здесь строка gridview может быть несколько одновременно. я сделал это с помощью цикла, но цикл может попасть в базу данных как строка, присутствующая в gridview, так что вы можете сказать мне любой метод, с помощью которого я могу вставить несколько записей за один раз.

Что я уже пробовал:

у меня есть такая петля использования
if (gvSample!= null)
           {
               for (int i = 0; i < (gvSample.Rows.Count; i++)
               {
                   GridViewRow row = this.(gvSample.Rows[i];
                   SqlCommand cmd = new SqlCommand();
                   cmd.CommandType = CommandType.StoredProcedure;
                   cmd.CommandText = "sp_Insert";
                   cmd.Parameters.AddWithValue("@Id", txtNumber.Text);
                   cmd.Parameters.AddWithValue("@Name", gvSample.Rows[i].Cells[1].Text);
                   cmd.Parameters.AddWithValue("@Document", gvSample.Rows[i].Cells[2].Text);
                  cmd.ExecuteNonQuery();
               }
           }

ZurdoDev

Что не так с кодом, который у вас есть?

AZHAR SAYYAD

в этом коде нет никаких проблем. я хочу послать только один раз. вот в этом коде из-за цикла этот код попадает на сервер несколько раз. я хочу ударить только один раз и вставить множественную запись, передав множественную запись в одном методе.

1 Ответов

Рейтинг:
1

Azziet

Вы можете вставить несколько строк, создав тип таблицы в Sql и передав DataTable процедуре

CREATE TYPE _table AS TABLE
(
Id INT,
Name VARCHAR(100),
DOCUMENT VARCHAR(200)
)

Изменить Вашу Процедуру
ALTER PROC sp_Insert
(
   @tablevariable _table READONLY
)
AS
BEGIN
   INSERT INTO YourTable(Id,Name,Document) SELECT Id,Name,Document FROM @tablevariable
END


изменение кода
if (gvSample!= null)
           {
		DataTable _dt = new DataTable();
_dt.Columns.Add("Id");
_dt.Columns.Add("Name");
_dt.Columns.Add("Document");
               for (int i = 0; i < gvSample.Rows.Count; i++)
               {
                   GridViewRow row = this.(gvSample.Rows[i]);
_dt.Rows.Add(gvSample.Rows[i].Cells[0].Text,gvSample.Rows[i].Cells[1].Text, gvSample.Rows[i].Cells[2].Text);
               }
SqlCommand cmd = new SqlCommand();
                   cmd.CommandType = CommandType.StoredProcedure;
                   cmd.CommandText = "sp_Insert";
                   cmd.Parameters.AddWithValue("@tablevariable", _dt );
                  cmd.ExecuteNonQuery();
           }
справочные:

[Вставка объемной строки за один раз]