Module Module1
Sub Main()
Dim cn As OleDb.OleDbConnection
Dim cd As OleDb.OleDbCommand
Dim ad As OleDb.OleDbDataAdapter
Dim ds As DataSet
cn = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TXT\;Extended Properties=""text;HDR=Yes;FMT=Delimited""")
ad = New OleDb.OleDbDataAdapter
ds = New DataSet
cd = New OleDb.OleDbCommand("SELECT * FROM TEST.CSV", cn)
ad.SelectCommand = cd
cn.Open()
ad.Fill(ds)
ds.Tables(0).Rows(1).Delete()
ds.AcceptChanges()
ad.Dispose()
cn.Close()
End Sub
End Module
VB.NET:работа с текстовыми файлами в ADO.NET (OLEDB)
Может кто сталкивался с такой проблемой:
Работаю с текстовыми файлами (в формате CSV) приблизительного такого содержания:
"DRIVER","ROUTE","DAYWEEK","DATE"
"ДЕМО2","ДЕМО2","SUNDAY"
"ДЕМО2","ДЕМО2","MONDAY"
В каталоге болтается Schema.ini:
[test.csv]
ColNameHeader=True
Format=CSVDelimited
MaxScanRows=0
CharacterSet=OEM
Подключаюсь к файлам с помощью OLEDB (пример ниже), конект проходит, запросы обрабатываются. При редактированиии данных и сохранении в DataTable, все изминения нормально видны. Но на все попытки слить измененные данные уже в сам текстовик с DataAdapter студия меня просто игнорирует . Не ругается, но и не сохраняет.
Пример кода:
Код:
Как вариант, можно в коде взять из DataSet таблицы данных и сохранить их в текстовом виде явно (через FileStream). Лучше посмотри отладчиком, действительно ли функция Delete() удаляет сроку из таблицы.
А с FileStream будет заминка. Можно, сомо-собой, пробежаться в цикле по строкам и явно засунуть их в текстовик, но есть заминка - в файлике все строчные записи заключены в кавычки а числовые вписываются без них. Получается, что надо еще на лету опредилять тип записей в столбце, перевести из строковых значений в числовые (где это надо) а тогда уже, исходя с этого наполнять FileStream.
А с FileStream будет заминка. Можно, сомо-собой, пробежаться в цикле по строкам и явно засунуть их в текстовик, но есть заминка - в файлике все строчные записи заключены в кавычки а числовые вписываются без них. Получается, что надо еще на лету опредилять тип записей в столбце, перевести из строковых значений в числовые (где это надо) а тогда уже, исходя с этого наполнять FileStream.[/quote]
Узнать какой тип данных записывается в столбец не сложно. Свойство DataTable.Columns[0].DataType возвращает тип данных в столбце.