Akhil Madivada Ответов: 2

Как написать код C#, если таблица не существует, создайте новую таблицу в БД с теми же столбцами и вставьте данные


Developers, I am new to programming and c# coding I written a code to insert the Xml data into database and it is working perfect but my requirement in code is "if table is not exists create a new table with same columns in the DataBase and insert the data " so how can I write the code ?


<pre lang="c#"><pre> public void SaveXmltoDB(List<MeterReading> MeterReadingList)
    {
        //OpenConnection();

       // CreateTableIfNotExists();
        foreach (var meterReading in MeterReadingList)
        {
            foreach(var interval in meterReading.IntervalDatalist)
            {
                foreach(var reading in interval.Readinglist)
                {
                    string command = string.Format("insert into INTERVALDATA1(SerialNumber,TimeStamp,MeterData) VALUES ({0},'{1}',{2})", meterReading.MeterName, reading.TimeStamp.ToString(), reading.RawReading);
                    using (SqlConnection conn = new SqlConnection("server=LAPTOP-N6V52QKD\\AKHIL5656;" +
                                   "Trusted_Connection=yes;" +
                                   "database=ReportServer$AKHIL5656; " +
                                   "connection timeout=30;" + "persist security info = True;" +
    "Integrated Security = SSPI;"))
                    {

                        SqlCommand myCommand = new SqlCommand(command,conn);
                        myCommand.CommandType = System.Data.CommandType.Text;

                        conn.Open();
                        try
                        {
                            myCommand.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {

                        }

                    }


                }
            }
        }
        CloseConnection();

    }

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

кто-нибудь может мне в этом помочь?

Спасибо,

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

<pre lang="c#">private void CreateTableIfNotExists()
        {
            using (var command = new SqlCommand())
            {
                command.Connection = myConnection;
                command.CommandText = "IF NOT EXISTS( SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'INTERVALDATA') " +
                    "CREATE TABLE INTERVALDATA (MeterId int identity(1,1),SerialNumber int,TimeStamp datetime,MeterData decimal, MeterDirection varchar)";
                command.ExecuteNonQuery();
            }

ZurdoDev

Я бы превратил это в хранимую процедуру. Не стоит вкладывать столько sql-логики в код c#.

2 Ответов

Рейтинг:
2

RickZeeland

SELECT * INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;


Рейтинг:
0

Patrice T

string command = string.Format("insert into INTERVALDATA1(SerialNumber,TimeStamp,MeterData) VALUES ({0},'{1}',{2})", meterReading.MeterName, reading.TimeStamp.ToString(), reading.RawReading);

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]