SQLサーバーを使用していない、おそらく何かlike this could help? LiteDB LiteDBでデータをホストし、必要に応じていつでもCSVにエクスポートできます。 CSVファイルを使って作業することは、通常、更新があるたびにファイル全体を書き直すことを意味します。これは遅くて面倒です。ポイントAからポイントBへデータを転送するのにCSVを使用することをお勧めしますが、データを維持することは推奨しません。
また、CSVに固執したい場合は、以前はJETドライバとして知られていたMicrosoft Ace OLEDBドライバを見てください。私はCSVファイルを照会するためにそれを使用しますが、私はそれを更新するために使用したことはありません...あなたの走行距離は異なる場合があります。
実際のDataBaseまたはデータベースドライバを使用するには、StreamWriterとともにStreamReaderを使用する必要があります。 StreamReaderでファイルを読み取り、StreamWriterで新しいファイルを書き込みます。あなたのStreanReaderで。これは、更新する正しいLineを見つけるためのコードをStreamReaderに持たせることを意味します。
私はLiteDBとやりとりするために作成したクラスです。それほど強力ではありませんが、当時私が必要としていたこととまったく同じでした。プラットフォーム上でホストされている多数の製品に変更を加えなければならず、これを使用して進捗状況を追跡しました。
using System;
using LiteDB;
namespace FixProductsProperty
{
public enum ListAction
{
Add = 0,
Remove,
Update,
Disable,
Enable
}
class DbInteractions
{
public static readonly string dbFilename = "MyDatabaseName.db";
public static readonly string dbItemsTableName = "MyTableName";
public void ToDataBase(ListAction incomingAction, TrackingDbEntry dbEntry = null)
{
if (dbEntry == null)
{
Exception ex = new Exception("dbEntry can not be null");
throw ex;
}
// Open database (or create if not exits)
using (var db = new LiteDatabase(dbFilename))
{
var backupListInDB = db.GetCollection<TrackingDbEntry>(dbItemsTableName);
//ovverride action if needed
if (incomingAction == ListAction.Add)
{
var tempone = backupListInDB.FindOne(p => p.ProductID == dbEntry.ProductID);
if (backupListInDB.FindOne(p => p.ProductID == dbEntry.ProductID) != null)
{
//the record already exists
incomingAction = ListAction.Update;
//IOException ex = new IOException("Err: Duplicate. " + dbEntry.ProductID + " is already in the database.");
//throw ex;
}
else
{
//the record does not already exist
incomingAction = ListAction.Add;
}
}
switch (incomingAction)
{
case ListAction.Add:
backupListInDB.Insert(dbEntry);
break;
case ListAction.Remove:
//backupListInDB.Delete(p => p.FileOrFolderPath == backupItem.FileOrFolderPath);
if (dbEntry.ProductID != 0)
{
backupListInDB.Delete(dbEntry.ProductID);
}
break;
case ListAction.Update:
if (dbEntry.ProductID != 0)
{
backupListInDB.Update(dbEntry.ProductID, dbEntry);
}
break;
case ListAction.Disable:
break;
case ListAction.Enable:
break;
default:
break;
}
backupListInDB.EnsureIndex(p => p.ProductID);
// Use Linq to query documents
//var results = backupListInDB.Find(x => x.Name.StartsWith("Jo"));
}
}
}
}
私はこのようにそれを使用します。
DbInteractions yeah = new DbInteractions();
yeah.ToDataBase(ListAction.Add, new TrackingDbEntry { ProductID = dataBoundItem.ProductID, StoreID = dataBoundItem.StoreID, ChangeStatus = true });
申し訳ありませんが...私の変数の命名規則は時々...お返事のための
感謝を吹く、私はドキュメントをチェックしましょう、あなたが使用しています前にlitedb?あなたが例を持っていれば私はLiteDBを私のアプリに実装するのを喜んで了承してくれるでしょう。 – Kate
私は以前LiteDBを使っていました。 [自分のウェブサイト](http://www.litedb.org/)の一番上にはコードサンプルが一番下にあります。それが私が始めたところです。 –
@Kate、私の投稿を自分のLiteDBクラスのコピー/ペーストで更新しました。 –