Praveen_P Ответов: 5

Как вставить таблицу данных в таблицу базы данных SQL Server?


Как вставить таблицу данных в таблицу базы данных SQL Server ?

Maciej Los

Что вы делали до сих пор? Где ты застрял?

Praveen_P

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

5 Ответов

Рейтинг:
37

An@nd Rajan10

dt - это таблица данных

for (int i = 0; dt.Rows.Count > i; i++)
            {
                //insert Query
            }


вставить запрос типа

insert into tableName values ( dt.Rows[i].ItemArray.GetValue(0).ToString(), dt.Rows[i].ItemArray.GetValue(1).ToString(), dt.Rows[i].ItemArray.GetValue(2).ToString() etc...)


я надеюсь, что этот код немного поможет...


Member 14883666

Что делать, если не строковый тип данных?

Рейтинг:
2

♥…ЯҠ…♥

Привет Правин,

Если вы используете SQL Server 2008, то это легко сделать с помощью табличного объекта и процедуры хранения.
Вы можете обратиться здесь[^] для образцов.
Здесь[^] - это то, как вы можете реализовать.

Надеюсь, это вам немного поможет.

С уважением,
РК


Praveen_P

спасибо тебе

Рейтинг:
2

Venkatesh K

DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)),
                        new DataColumn("Name", typeof(string)),
                        new DataColumn("Country",typeof(string)) });
    foreach (GridViewRow row in GridView1.Rows)
    {
        if ((row.FindControl("CheckBox1") as CheckBox).Checked)
        {
            int id = int.Parse(row.Cells[1].Text);
            string name = row.Cells[2].Text;
            string country = row.Cells[3].Text;
            dt.Rows.Add(id, name, country);
        }
    }
    if (dt.Rows.Count > 0)
    {
        string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(consString))
        {
            using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
            {
                //Set the database table name
                sqlBulkCopy.DestinationTableName = "dbo.Customers";
 
                //[OPTIONAL]: Map the DataTable columns with that of the database table
                sqlBulkCopy.ColumnMappings.Add("Id", "CustomerId");
                sqlBulkCopy.ColumnMappings.Add("Name", "Name");
                sqlBulkCopy.ColumnMappings.Add("Country", "Country");
                con.Open();
                sqlBulkCopy.WriteToServer(dt);
                con.Close();
            }
        }
    }


Рейтинг:
1

Peter Leow

Вы можете попробовать SqlBulkCopy без цикла:
SqlBulkCopy
Класс SqlBulkCopy


Praveen_P

спасибо, все работает гладко

Kedar Kulkarni

Любые предложения относительно того, как я могу изменить его в хранимой процедуре ??

Рейтинг:
0

M.Nabeel Siddiqui

Запишите имя таблицы хранимых процедур, например: MoodleUsersTable

use Sample
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<m.nabeel siddiqui="">
-- Create date: <19/4/2016>
-- Description:	<adding records="" in="" moodleusers="">
-- =============================================
Alter PROCEDURE InsertMoodleUsers
@MoodleUserTable MoodleUsersTable readonly

AS
BEGIN
insert into MoodleUsers select * from @MoodleUserTable
END
GO</adding></m.nabeel>


и код c# здесь

public void runsp(DataTable dt1,string spName)
        {
            SqlCommand cmd = new SqlCommand(spName, connection);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter dtparam = cmd.Parameters.AddWithValue("@MoodleUserTable", dt1);

            dtparam.SqlDbType = SqlDbType.Structured;
            Start();
            cmd.ExecuteNonQuery();
            Stop();
        }


CHill60

Вопрос старше 2 лет и уже получил ответ.