Проблема со вставкой в файл.dbf
Этот код не сохраняет никаких данных в файле DBF. Что здесь не так? Вот код с рекомендуемыми изменениями. Спасибо.
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEMP;Extended Properties=dBase IV";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = connection.CreateCommand())
{
connection.Open();
command.CommandText = @"CREATE TABLE TEST (Id Text, Changed Text, Tacos Text)";
command.ExecuteNonQuery();
}
using (OleDbConnection connection2 = new OleDbConnection(connectionString))
using (OleDbCommand command2 = connection2.CreateCommand())
{
connection2.Open();
command2.CommandText = @"Insert into TEST (Id, Changed, Tacos) VALUES ('One','Two','Three')";
try
{
command2.ExecuteNonQuery();
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
}
}
1 ответ
Позитивно, но, глядя на ваше соединение, вы подключаетесь к корню C:.... плохо... Это может быть просто вопросом разрешений и невозможностью записи в корневой каталог.'
Я бы предложил создать ваше подключение к некоторой подпапке, даже если это просто
C:\MyDBFTesting\
После этого посмотрите, действительно ли сработал результат "CREATE TABLE", и вы увидите "test.dbf".
Наконец, поместите ваш executeNonQuery() в try/catch
try
{
command2.ExecuteNonQuery()
}
catch( Exception e )
{
string x = e.Message;
}
поставьте точку останова на улове и войдите в... посмотрите, какие ДРУГИЕ элементы / сообщения могут быть в объекте исключения "e", чтобы предоставить вам больше возможных ответов.
Видя контекст ".dbt" (который указывает больше текста в произвольной форме, а не фиксированных / стандартных типов), я бы изменил ваше создание, чтобы явно идентифицировать ХАРАКТЕР фиксированной емкости... что-то вроде
create table Test ( ID C(10), Changed C(10), Tacos C(10) )
C = символ, а 10 - максимальный размер, допустимый в столбце. Другие типы данных, такие как I = int, D = только дата, T = дата / время, L = логический и т. Д. Это "известные" типы, которые обеспечивают строгую структуру. Текст является произвольной формой, и его содержимое помещается в файл.dbt, но ДОЛЖНА быть соответствующая запись, но в противном случае она не будет отображаться.
Тогда ваша команда вставки все равно будет работать идентично.