Получить заголовок из SQL запроса VB.NET
Привет, я пытаюсь получить данные из sql server и экспортировать их в csv-файл. Но CSV-файл не нравится так, как должен. И отсутствующие заголовки. Можете ли вы помочь мне, пожалуйста?
Что я уже пробовал:
Private Sub DBExecuteQueryWriteToFile(ByVal sender As System.Object, ByVal e As System.EventArgs, Optional ByVal Delimiter As String = ",") Handles ziskat_btn.Click Dim SqlCommand As String Dim filePath As String = "C:\Users\cahafi\Desktop\vbexcel.csv" 'Dim csvFileWriter = New StreamWriter(filePath, False, Encoding.GetEncoding("Windows-1250")) SqlCommand = ("SELECT TabPrikazMzdyAZmetky.IDPracoviste=VPrikazMzdyAZmetkyPracoviste.ID LEFT OUTER JOIN TabKmenZbozi VPrikazMzdyAZmetkyKmenZbozi WITH(NOLOCK) ON TabPrikazMzdyAZmetky.IDTabKmen=VPrikazMzdyAZmetkyKmenZbozi.ID LEFT OUTER JOIN TabPrikaz VPrikazMzdyAZmetkyPrikaz WITH(NOLOCK) ON VPrikazMzdyAZmetkyPrikaz.ID=TabPrikazMzdyAZmetky.IDPrikaz LEFT OUTER JOIN TabCisZam VPrikazMzdyAZmetkyZamestnanec WITH(NOLOCK) ON TabPrikazMzdyAZmetky.Zamestnanec=VPrikazMzdyAZmetkyZamestnanec.ID LEFT OUTER JOIN TabCSmeny VPrikazMzdyAZmetkySmena WITH(NOLOCK) ON VPrikazMzdyAZmetkySmena.ID=TabPrikazMzdyAZmetky.IDSmeny LEFT OUTER JOIN TabCZavad VMzdyAZmetkyCZavad WITH(NOLOCK) ON VMzdyAZmetkyCZavad.ID=TabPrikazMzdyAZmetky.IDZavady LEFT OUTER JOIN TabPrikazMzdyAZmetky_EXT WITH(NOLOCK) ON TabPrikazMzdyAZmetky_EXT.ID=TabPrikazMzdyAZmetky.ID WHERE ((TabPrikazMzdyAZmetky.TypMzdy<>2)AND(TabPrikazMzdyAZmetky.DatPorizeni>'1.1.2019')AND(TabPrikazMzdyAZmetky.DatPorizeni<'" + Label1.Text + "') AND(VPrikazMzdyAZmetkyKmenZbozi.SkupZbo<>N'VYL'))AND(VPrikazMzdyAZmetkyKmenZbozi.SKP NOT LIKE N'%mohelnice%')AND(VPrikazMzdyAZmetkyKmenZbozi.SKP NOT LIKE N'%Mohelnice%')AND(VPrikazMzdyAZmetkyKmenZbozi.SkupZbo NOT LIKE N'%PMN%')ORDER BY TabPrikazMzdyAZmetky.DatPorizeni DESC") Dim bufferSize = 1024 Dim cmd = New SqlCommand(SqlCommand, conn) conn.Open() Using FileObject As New FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, bufferSize) Using StreamWriterObj As New StreamWriter(FileObject, Encoding.GetEncoding("Windows-1250")) Using Reader As SqlDataReader = cmd.ExecuteReader() Dim FieldCount As Integer = Reader.FieldCount Do While Reader.Read() StreamWriterObj.Write(Reader.Item(0)) For i As Integer = 0 To FieldCount - 1 StreamWriterObj.Write(Delimiter) StreamWriterObj.Write(Reader.Item(i)) Next StreamWriterObj.WriteLine() Loop End Using End Using End Using End Sub
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Richard Deeming
И в вашем файле отсутствуют заголовки, потому что вы никогда не пишете никаких заголовков в файл.
Member 13711215
И как я могу писать заголовки?