الاستعلام عن ملف DBF مع system.data.odbc.odbcconnection عندما يكون مسار/اسم الملف مساحة

StackOverflow https://stackoverflow.com/questions/3151073

  •  01-10-2019
  •  | 
  •  

سؤال

أحاول الاستعلام عن ملف DBF باستخدام system.data.odbc.odbcconnection. يعمل بشكل صحيح عندما لا يحتوي الملف على مساحة فيه ، لكنني أحصل على الخطأ التالي "خطأ في فتح ملف DBF: خطأ [42000] [Microsoft] الاسم لديه مساحة فيه.

أنا أستخدم الكود التالي:

Oconn = new System.Data.odbc.odbcConnection () ؛ Oconn.ConnectionString = "Driver = {microsoft dbase driver (*.dbf)} ؛ sourCetype = dbf ؛ sourcedb = na ؛ الحصري = لا ؛ collate = machine ؛ null = no ؛ deleted = no ؛ backgroundfetch = no ؛" ؛

OCMD.CommandText = "SELECT * FROM C: TEST 2 12345678.DBF" ؛

نص الأوامر غير مشفر. أنا فقط أدرجته بهذه الطريقة للبساطة. يتم إعداد التطبيق للسماح للمستخدم باختيار ملف DBF وعرضه. ليس لدي تحكم في المكان الذي يقوم فيه المستخدمون بتخزين ملفات DBF ويفضلون ألا يضطروا إلى جعلهم يتذكرون عدم وضع المساحات في اسم الملف/المسار.

كيف أهرب من المساحة في اسم الملف/المسار؟

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

المحلول

من المحتمل أن تكون مشكلة تتعلق بـ "تنسيق اسم ملف MS-DOS 8.3". يمكنك مراجعة الروابط التالية:

نصائح أخرى

كنت أركض في هذه القضية أيضًا. كان هذا هو رقم 1 في Google ، لذلك لم أكن متفائلاً للغاية. ومع ذلك ، تمكنا من الحصول على الكود الخاص بي من خلال تغيير الدليل الحالي إلى الدليل الإشكالي ثم استبعاد المسار في commandtext:

//Save the current directory
string currentDir = System.IO.Directory.GetCurrentDirectory();

//Select the path that we need to use
System.IO.Directory.SetCurrentDirectory("C:\\test 2\\");

//Now the path isn't required:
oCmd.CommandText = @"SELECT * FROM 12345678.dbf";

//Restore the old directory
System.IO.Directory.SetCurrentDirectory(currentDir);

لا تزال محدودة فيما يمكن أن يكون اسم الملف (لا توجد مسافات و <= 8 شار على ما أعتقد) ، ولكن هذا شيء يمكنني العمل معه.

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