Может ли кто-нибудь сказать мне, как получить список таблиц в базе данных Visual FoxPro из C#?Получить список таблиц из базы данных
Я пробовал использовать GetSchema
, но информация, которая возвращается, кажется, просто счет (и неточно рассчитывает на это).
Вот что у меня есть ...
string connSrc = @"Provider=VFPOLEDB.1;Data Source=myvfpdb.dbc";
using (var cmdSrc = new OleDbCommand())
using (var dbconnSrc = new OleDbConnection(connSrc))
{
dbconnSrc.Open();
DataTable schema = dbconnSrc.GetSchema();
}
Я думал, что может быть какой-то способ, которым я мог бы открыть файл DBC непосредственно и запустить ВЫБРАТЬ против него, но проблема в том, что база данных находится в пути к строке подключения. Я не мог найти команду OleDb, которая извлекала бы информацию о схеме.
EDIT:
я нашел способ, который работает, но это кажется немного неуклюжим. Кто-нибудь знает лучший способ?
string connSrc = @"Provider=VFPOLEDB.1;Data Source=myvfpdb.dbc";
using (var conn = new OleDbConnection(connSrc))
dbc = conn.DataSource;
string path = Path.GetDirectoryName(dbc);
string database = Path.GetFileName(dbc);
using (var conn = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + path))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM " + database;
DbDataReader reader = cmd.ExecuteReader();
}
}
EDIT:
С предложением Тамар изменил оператор запроса к этому ...
cmd.CommandText = $"SELECT ObjectName FROM {database} WHERE ObjectType = \"Table\"";
Можно, конечно, добавить ИНЕКЕ в запросе: WHERE ObjectType = "Таблица" –
@ TamarE.Granor Хороший улов! Я добавлю это. –
И? Это решило вашу проблему? Если это так, просто опубликуйте его как ответ. –