Здравствуйте, нужно открыть dbf файл, изменить его через SQL запросы и сохранить в другой файл. С dbf никогда не работал, поэтому искал код в инете. Нашел вот такой код для чтения, который работает нормально:
OdbcConnection Conn = null;
...
string str = @"SELECT * FROM D:\Work\rrk.dbf";
DataTable dt = new DataTable();
OdbcDataAdapter da = new OdbcDataAdapter(str, Conn);
da.Fill(dt);
dataGridView1.DataSource = dt;
Но есть еще код для создания таблицы:
string str0 = "Create Table Persons (name char(20))";
OdbcCommand cmd = new OdbcCommand(str0, Conn);
cmd.ExecuteNonQuery();
Который выдает ошибку :"Для ExecuteNonQuery нужно открытое и доступное подключение Connection. Подключение закрыто.". Если добавить Conn.Open(); в начало и Conn.Close(); в конец, код исполняется (таблица видимо создается), но при последующем запуске происходит ошибка "таблица уже создана с таким именем".
Conn.Open();
string str0 = "Create table ass (name char(20))";
OdbcCommand cmd = new OdbcCommand(str0, Conn);
cmd.ExecuteNonQuery();
Conn.Close();
Возникает сразу несколько вопросов: как сохранить созданную таблицу в dbf файл? Как сохранить ее в DataTable (для вывода затем в DataGridView)?
вот нашел кусок кода для DotNetDBF :
using (Stream fos = File.Open(dbffile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (var writer = new DBFWriter())
{
writer.CharEncoding = Encoding.GetEncoding(866);
writer.Signature = DBFSigniture.DBase3;
writer.LanguageDriver = 0x26; // кодировка 866
var field1 = new DBFField("DOCDATE", NativeDbType.Date);
var field2 = new DBFField("DOCNUMBER", NativeDbType.Char, 50);
var field3 = new DBFField("POSNAME", NativeDbType.Char, 255);
var field4 = new DBFField("POSCODE", NativeDbType.Numeric, 10, 0);
var field5 = new DBFField("RETPRICE", NativeDbType.Numeric, 10, 2);
var field6 = new DBFField("QUANTITY", NativeDbType.Numeric, 3, 2);
var field7 = new DBFField("APCODE", NativeDbType.Numeric, 10, 0);
var field8 = new DBFField("CLNTNAME", NativeDbType.Char, 255);
var field9 = new DBFField("CLNTPHONE", NativeDbType.Char, 20);
writer.Fields = new[] { field1, field2, field3, field4, field5, field6, field7, field8, field9 };
foreach (var item in items)
{
writer.AddRecord(
// добавляем поля в набор
);
}
writer.Write(fos);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня стоит Visual Studio Enterprise 2017Необходимо создать инсталлятор для созданной настройки VSTO для PowerPoint 2013
Подскажите, можно ли достать данные ( прочитать базу ) при открытом браузере? Есть ли какие-нибудь средства обхода?
Доброе время сутокИмеются срабатывающие в таймере событие, 3 потока и класс, передающий в поток 2 параметра (объект из очереди и время "эмуляции"...
Хочется отображать а странице, счетчик итераций циклаНе знаю как это сделать