Как написать код 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#.
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]