سؤال

وأنا أحاول كتابة برنامج # C، حيث عندما يقوم المستخدم بإدخال بعض البيانات في مربع نص وينقر على زر "حفظ"، يتم تخزين المعلومات في نوع من الملفات التي عند فتح البرنامج المقبل المرة، يتم تحميل المعلومات تلقائيا في.

وأنا باستخدام Visual C # صريحة. ما هي أفضل طريقة للقيام بذلك دون الحاجة إلى نوع من قاعدة البيانات مثل الخلية أو MSSQL أو الوصول؟

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

وp.s.

ولقد نسيت أن أذكر، فما استقاموا لكم فاستقيموا بدلا المستخدم لن يكون قادرا على الوصول إلى هذا الملف وقراءة محتويات بسهولة. سيكون ملف نصي بدون تشفير تكون سهلة لفتح. أي طريقة لتشفير هذه؟ أيضا، إذا كنت تستخدم محدد مثل ':'، فإن ذلك لا يعني يمكن للمستخدم استخدام ذلك الحرف. لذلك فإن أي طريقة أخرى؟

وشكرا!

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

المحلول

تأكد بيانات المستخدم تسلسل بإضافة الكلمة:

[Serializable]

وفوق بنية البيانات الخاصة بك. عند تحميل مربع الحوار، تحميل هيكل تسلسل من القرص، وعند مغادرة الحوار، وتوفير بنية البيانات.

من وجهة نظر النمط، يجب عليك ربما ليس لديها بيانات تغيير مربع الحوار حتى يتم إغلاق مربع الحوار (إذا كان مشروطا).

لحفظ:

    private bool Save(String inFileName, MyObject inObject){
        try {
            FileStream theStream = File.Open(inFileName, FileMode.Create);

            BinaryFormatter theFormatter = new BinaryFormatter();
            theFormatter.Serialize(theStream, inObject);//add it to the end there
            theStream.Dispose();
            theStream.Close();
        } catch{
            return false;
        }
        return true;

    }

لتحميل:

    private MyObject Read(String inFileName){
        MyObject theReturn = null;
        try {

            FileStream theStream = File.Open(inFileName, FileMode.Open, FileAccess.Read);                

            BinaryFormatter theFormatter = new BinaryFormatter();
            theReturn = (CImageData)theFormatter.Deserialize(theStream);//add it to the end there
            theStream.Dispose();
            theStream.Close();
        }
        catch {
            return null;
        }
        return theReturn;
    }

ويمكنك أيضا استخدام 'باستخدام' على تيار، ولكن هذا الرمز واضحة جدا، على ما أعتقد. وهذا يعني أيضا أنه يمكنك إضافة المزيد من العناصر في MyObject.

وتحرير: لتشفير، يمكنك إضافة في AES أو شيئا من هذا القبيل. قد يكون هذا مبالغة بالنسبة لك، وحفظ الملف على أنه ثنائي قد يجعل من قراءة شيء مثل المفكرة، ولكن ليس للتحرير بسهولة. وفيما يلي شرحا مطولا على التشفير الحقيقي:

http://msdn.microsoft.com/en-us/magazine /cc164055.aspx

نصائح أخرى

SQL Edition ضغط أن إخفاء البيانات عن كونها يمكن الوصول إليها بسهولة (والحر). يمكنك أيضا كلمة السر تحمي قاعدة بيانات CE. ويرد قاعدة بيانات SQL CE تماما في ملف .SDF، مثل الوصول، لذلك يمكنك نسخ ملف .sdf حول ولا داعي للقلق حول الاتصال بالشبكة، وما إلى ذلك.

إذا وفقط إلى أن يتم استخدام التطبيق الخاص بك عن طريق شخص واحد ثم ببساطة تخزين البيانات في ملف (XML سوف اعطيكم بعض هيكل)

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

و(تحرير: قاعدة البيانات في الواقع ليس من الضروري أن يكون على مستخدمي الكمبيوتر، لكنه سوف تحتاج إلى أن تكون قادرة على رؤيتها من coputer له)

إذا انها بسيطة جدا ثم هل يمكن وضعه في ملف نص عادي. للحصول على بيانات أكثر تنظيما هل يمكن النظر تخزين أنها CSV وتحليل أو خلق XmlDocument والادخار التي على القرص.

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