Nand Kishor Upadhyay Ответов: 5

Вставить все записи из datagridview к таблице SQL с#


Привет
Я использую графический интерфейс C#, и у меня есть один dataGridview и одна кнопка, Я хочу сохранить все строки и столбцы в таблицу sql из сетки, пожалуйста, помогите мне.....

5 Ответов

Рейтинг:
29

OriginalGriff

Предполагая, что ваш DataGridView не привязан к БД (или он уже содержит строки в базе данных, которые вы не хотите вставлять снова), вам лучше всего использовать цикл:

using (SqlConnection con = new SqlConnection(connectionString))
    {
    using (SqlCommand cmd = new SqlCommand("INSERT INTO MyTable(Column1, Column2) VALUES (@C1, @C2)", con))
        {
        cmd.Parameters.Add(new SqlParameter("@C1", SqlDbType.VarChar));
        cmd.Parameters.Add(new SqlParameter("@C2", SqlDbType.VarChar));
        con.Open();
        foreach (DataGridViewRow row in myDataGridView.Rows)
            {
            if (!row.IsNewRow)
                {
                cmd.Parameters["@C1"].Value = row.Cells[0].Value;
                cmd.Parameters["@C2"].Value = row.Cells[1].Value;
                cmd.ExecuteNonQuery();
                }
            }
        }
    }


The Doer

если (!подряд.IsNewRow) Это вернет старые данные, а не только что вставленные.

The Doer

(! греби.IsNewRow) это вернет старые строки.

Member 12588718

Ссылка на объект не установлена на экземпляр объекта.

Рейтинг:
2

Kumar_Jitendra

Привет,

Создайте xml-файл для данных сетки и отправьте весь xml-файл в процедуру хранения.

Внутри SP вы можете разобрать его и вставить записи, используя один оператор insert.

В этом случае вы позвоните SP один раз. Вам не нужно звонить SP несколько раз.

Спасибо :)


Рейтинг:
2

wylo suavez

Ваш код работает на 100% отлично, я модифицирую код для использования с хранимой процедурой, но это тот же самый вид!

void insertardgv2()
    {
 
        SqlConnection con = 
        new SqlConnection("Server=mypc Database=AdventureWorks2012;Trusted_Connection=True;");

        SqlCommand cmd = new SqlCommand("insertardatos", con);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add(new SqlParameter("@C1", SqlDbType.NVarChar));
        cmd.Parameters.Add(new SqlParameter("@C2", SqlDbType.NVarChar));

        con.Open();

        foreach (DataGridViewRow row in dataGridView2.Rows)
            {
            if (!row.IsNewRow)
                {
                cmd.Parameters["@C1"].Value = row.Cells[0].Value;
                cmd.Parameters["@C2"].Value = row.Cells[1].Value;
                cmd.ExecuteNonQuery();
                }
            }
    }


а вот моя хранимая процедура в sql

create procedure insertardatos
(
   @C1 nvarchar (40),
   @C2 nvarchar (40)
)

as

INSERT INTO Contacts(CompanyName, Phone) VALUES (@C1, @C2);

go


Рейтинг:
0

Naz_Firdouse

are you storing the datagridview row values in a dataset?
if so , you can pass this dataset to a stored procedure to insert into a database table

проверьте это, чтобы узнать, как передать набор данных в хранимую процедуру.
Передача datatable в хранимую процедуру в SQL Server 2008[^]


Рейтинг:
0

Member 9425683

Объект sqlconnection кон = новое sqlconnection(@"сервер=админ-ПК\Нирадж;базы данных=мастер;Комплексная безопасность=истина;");
SqlDataAdapter da=new SqlDataAdapter ("select * from empdata", con);
DataSet ds=новый набор данных();
да.Заполнить(ДС);
grddata.Источник данных=ds;
grddata.Привязку();

это будет работать для вас