سؤال

أحتاج إلى فتح جداول foxpro المجانية في vb.net باستخدام اتصال oledb.

لكن...أنا فقط بحاجة للحصول على أسماء الأعمدة.لا أحتاج حقًا إلى "تحديد" أي شيء.أحاول تصفح جميع جداولنا المجانية ديناميكيًا وإعداد قائمة بكل عمود من كل ملف وإحالة ذلك إلى جدول مجاني آخر يحتوي على وصف لكل عمود.

لدي نموذج عمل الآن، لكنه يتطلب أن أفعله...

SELECT TOP 1 FROM "File" ORDER BY 1

لكن على الطاولة الأكبر، يستغرق الأمر أكثر من دقيقتين فقط لقراءة السجل الأول ويوجد أكثر من 250 جدولًا.بشكل عام، يستغرق الأمر ما بين 15 إلى 20 دقيقة.

أم أن هناك طريقة أخرى للحصول على السجل الأول من الجدول فقط دون استخدام "ORDER BY"؟

هذا ما لدي حتى الآن.يتم تمرير "الملف" كمعلمة.
سيحتوي على معلومات مثل "C:\data able1.dbf"

Dim filePath As String
filePath = IO.Path.GetDirectoryName(file)
myOledbConnection = New OleDbConnection("Provider=VFPOLEDB.1;Data Source=" & filePath & ";Collating Sequence=MACHINE")
myOledbCommand = New OleDbCommand
myOledbDataAdapter = New OleDbDataAdapter
Dim fields, from, order As String

fields = "select top 1 *"
from = " from " & file
order = " order by 1"

myOledbCommand.CommandText = fields & from & order
myOledbCommand.Connection = myOledbConnection

myOledbDataAdapter.SelectCommand = myOledbCommand
myOledbDataAdapter.Fill(dt)                     

ثم آخذ جدول البيانات (dt) وأقوم بالتكرار للحصول على معلومات العمود.

أود أن يكون الأمر بنفس سرعة Visual Studio عندما أقوم بإنشاء مجموعة بيانات وتحميل جميع الجداول من الدليل من خلال المعالج.إنه قادر على العثور بسرعة كبيرة على جميع معلومات العمود دون قراءة البيانات من الجدول.

اسمحوا لي أن أعرف إذا كنت بحاجة إلى مزيد من المعلومات.

شكرًا.

هل كانت مفيدة؟

المحلول

لماذا تحتاج إلى الحصول على أي سجلات على الإطلاق؟يجب أن تكون قادرًا على القول:

SELECT * FROM "File" where 1 = 0

سيعطيك هذا مجموعة نتائج فارغة، كما سيعطيك بيانات وصفية عن الإسقاط الذي تم إرجاعه.

قد ترغب أيضًا في إلقاء نظرة على GetOleDbSchemaTable طريقة على ال OleDbConnection فصل, ، لأنه سيسمح لك بالحصول على معلومات حول مخطط قاعدة البيانات دون الحاجة إلى إجراء استعلام.

يمكنك أيضًا استخدام ملحقات Microsoft ADO للغة تعريف البيانات والأمان من خلال التشغيل المتداخل لـ COM (mxADOX.dll) للحصول على معلومات المخطط أيضًا.

نصائح أخرى

ولم أحاول هذا /. ولكن، يبدو أن الطريق للذهاب.

وعلى وجه التحديد "GetSchema" الطريقة على سبيل المثال OleDbConnection. http://msdn.microsoft.com/en-us /library/ms254934(VS.80).aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top