Rob¡nUters Ответов: 1

C# insert into from select [FIXED]


Привет,

Я ищу решение для запроса в 3 нескольких базах данных.

(1) Сначала я усеку таблицу Один в базе данных Один
(2) тогда я удалю таблицу Б из базы данных Б
(3) Следующий шаг-вставка в базу данных Б с Выбор из базы данных С
(4) затем обновите базу данных Один
(5) и последний шаг-вставить все данные из базы данных Один в базу данных С

код SQL
TRUNCATE TABLE BB.dbo.Credentials -- (1)

DELETE FROM CA.dbo.Badge WHERE UserField1 = 'CABB' -- (2)

INSERT INTO BB.dbo.Credentials (3)
 (id,Badge,firstname,middlename,lastname,createddatetime)
SELECT u.ID, w.VALUE, u.FIRSTNAME, u.MIDDLENAME, u.LASTNAME, w.CREATEDDATETIME FROM MM.dbo.User_ u 
INNER JOIN MM.dbo.WiegandUserValue w
ON u.ID = w.OWNERID

UPDATE BB.dbo.Credentials (4)
SET enabled = 1, resident = 1, initload = 1, accgrp = 1, facility = 0, userfield1 = 'CABB', record = 1, val1 = 0, val3 = 0, val4 = 0, val5 = 0


INSERT INTO CA.dbo.Badge (5)(FrstName,Middlename,Lastname,Badge,Enabled,Resident,InitLoad,AGroup1,Facility,UserField1)
SELECT firstname,middlename,lastname,value,enabled,resident,initload,accgrp,facility,userfield1 FROM cabb.dbo.Credentials


код c#
public void SQLQuery1()
        {
            SqlConnection sc = new SqlConnection(GetConnectionStringBiobridge());
            sc.Open();
 
            string query = string.Format("TRUNCATE TABLE BioBridge.dbo.Credentials");
 
            sc.Close();
        }
 
        public void SQLQuery2()
        {
            SqlConnection sc = new SqlConnection(GetConnectionStringCardAccess());
            sc.Open();
 
            string query = string.Format("DELETE FROM ca211LiveDB05242017_1213013.dbo.Badge WHERE UserField1 = 'CABB'");
 
            sc.Close();
        }
 
        public void SQLQuery3()
        {
            SqlConnection sc = new SqlConnection(GetConnectionStringBiobridge());
            sc.Open();
 
            string query = string.Format("INSERT INTO BioBridge.dbo.Credentials (id,value,firstname,middlename,lastname,createddatetime) " +
                "SELECT u.ID, w.VALUE, u.FIRSTNAME, u.MIDDLENAME, u.LASTNAME, w.CREATEDDATETIME FROM MorphoManager.dbo.User_ u " +
                "INNER JOIN MorphoManager.dbo.WiegandUserValue w ON u.ID = w.OWNERID");
 
            sc.Close();
        }
 
        public void SQLQuery4()
        {
            SqlConnection sc = new SqlConnection(GetConnectionStringBiobridge());
            sc.Open();
 
            string query = string.Format("UPDATE Biobridge.dbo.Credentials SET enabled = 1, resident = 1, initload = 1, accgrp = 1, facility = 0, userfield1 = 'CABB', record = 1, val1 = 0, val3 = 0, val4 = 0, val5 = 0");
 
            sc.Close();
        }
 
        public void SQLQuery5()
        {
            SqlConnection sc = new SqlConnection(GetConnectionStringCardAccess());
            sc.Open();
 
            string query = string.Format("INSERT INTO ca211LiveDB05242017_1213013.dbo.Badge (FrstName,Middlename,Lastname,Badge,Enabled,Resident,InitLoad,AGroup1,Facility,UserField1) " +
                "SELECT firstname, middlename, lastname, value, enabled, resident, initload, accgrp, facility, userfield1 FROM BioBridge.dbo.Credentials");
 
            sc.Close();
        }
 
        private void btnInsert_Click(object sender, EventArgs e)
        {
            SQLQuery1();
            SQLQuery2();
            SQLQuery3();
            SQLQuery4();
            SQLQuery5();
        }


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

Когда я делаю это вручную в SQL Management Studio, это работает, но когда я делаю это в C# с помощью button_click, это не работает. Когда я создам messagebox. show и нажму на кнопку, появится messagebox.

Кто-нибудь знает, что я делаю не так?

Заранее спасибо!

RickZeeland

Мы не можем сказать, если вы не покажете код !

Rob¡nUters

У меня есть добавить код по этому вопросу

OriginalGriff

Не видя кода, который вы пробовали-а не только SQL, который вы (предположительно) вставили в код, - мы находимся в таком же неведении, как и вы.

Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Rob¡nUters

Я добавил код по этому вопросу. Спасибо! :-)

PIEBALDconsult

Где вы выполняете SQL-операторы?

Rob¡nUters

В кнопке ниже в коде de c#

PIEBALDconsult

Думаешь?

Rob¡nUters

Я ссылаюсь на SQLQuery с помощью SQLQuery1(); SQLQuery2 (); и так далее

PIEBALDconsult

..- которые нигде не исполняются?

Rob¡nUters

Ах, я вижу cmd. executereader, который мне нужно добавить в код, не так ли?

PIEBALDconsult

Или ExecuteNonquery, либо должен работать.

Rob¡nUters

Теперь он сделает больше, он разобьется первым же исполнителем, ха-ха.

Rob¡nUters

Найти ее :-) Спасибо за вашу прессу в правильном направлении! :-)

ZurdoDev

Опубликуйте как решение, Пожалуйста.

1 Ответов

Рейтинг:
9

Sheila Pontes

Привет,

Ваше соединение для выполнения команды sql является неполным.

Вот! Как подключить и выполнить команду SQL.

public void SQLQuery1()
{
    SqlConnection sc = new SqlConnection(GetConnectionStringBiobridge());
    sc.Open();

    string query = string.Format("TRUNCATE TABLE BioBridge.dbo.Credentials");
            
    SqlCommand SQLcm = new SqlCommand();
    SQLcm.Connection = sc;
    SQLcm.CommandText = query;
    SQLcm.CommandType = CommandType.Text;
    SQLcm.ExecuteNonQuery();
    sc.Close();
}


если хочешь знать больше.
Класс Объекта Sqlconnection (Системы.Данных.Поставщики sqlclient)

Пространство Имен System. Data.SqlClient