質問

ユーザーがテキストボックスにデータを入力して[保存]をクリックすると、C#プログラムを記述しようとしています。ボタンをクリックすると、情報は何らかのファイルに保存され、次回プログラムを開いたときに情報が自動的に読み込まれます。

Visual C#エクスプレスを使用しています。 MySQL、MSSQL、Accessなどのデータベースを必要とせずにこれを行う最良の方法は何ですか?

データベースが唯一の方法または最も簡単な方法である場合、Accessを使用します。その場合、プログラムのユーザーが自分のプログラムをコンピューターで実行するには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 Compact Edition は、データを隠します簡単にアクセスできます(そして無料です)。 CEデータベースをパスワードで保護することもできます。 SQL CEデータベースはAccessなどの.SDFファイルに完全に含まれているため、.sdfファイルをコピーしてネットワーク接続などを心配する必要はありません。

アプリケーションを1人のユーザーのみが使用する場合は、データをファイルに保存するだけです(XMLで構造がわかります)

アプリケーションを複数の人が使用し、データを共有する場合、データベースが最適なオプションです。データベースを使用する場合は、はい、ユーザーのコンピューターにデータベースをインストールする必要がありますが、ユーザーに透過的に実行することは可能ですが、埋め込み可能なデータベースを使用するのが最善です。MySQLのようなものが最適です賭けます。

(編集:データベースは実際にユーザーのコンピューター上にある必要はありませんが、コンピューターから見ることができる必要があります)

非常に単純な場合は、プレーンテキストファイルに配置できます。より構造化されたデータについては、CSVとして保存して解析するか、XmlDocumentを作成してディスクに保存することを検討できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top