質問
RPGプログラム(AS / 400上のIBMの言語の一つ)で、私はレコード(たとえば、特定の顧客レコード)がファイルに存在するかどうかを確認するために、ファイルに出て「チェーン」することができます。それがない場合は、その後、私は新しいデータで瞬時にそのレコードを更新することができます。レコードが存在しない場合、私は新しいレコードを書き込むことができます。コードは次のようになります:
Customer Chain CustFile 71 ;turn on indicator 71 if not found
if *in71 ;if 71 is "on"
eval CustID = Customer;
eval CustCredit = 10000;
write CustRecord
else ;71 not on, record found.
CustCredit = 10000;
update CustRecord
endif
(「チェーン」はRPGで何をするかである)ファイルからランダムに取り出しを行う方法がある場合は、はSQL / C#と実際のおなじみされていない、私は思ったんだけど。基本的に私はレコードが存在するかどうかを確認したいです。それがない場合は、いくつかの新しい情報でレコードを更新。そうでない場合は、私は新しいレコードを書きたいです。私はそれが可能だと確信してではなく、かなり確実にそれをやってについて移動する方法について説明します。何かアドバイスをいただければ幸いです。
解決
RPGは、システム上のデータベーステーブルに固有の接続性を持っています。それはそれは簡単な簡潔な操作を書くことができます。
C#、一方で、独自のデータベース・ルーチンを実装する(またはLINQのようなフレームワークを使用)する必要があります。
私はこれをやっていた場合は、私がSystem.OLEDBを使用してデータベース操作を担当するクラスを作成しますオブジェクトます。
いくつかの方法があるかもしれない(一般的な考え方ではなく、実際のコード):
public boolean CheckExists(string TableName, string ColumnName, int ID) {
//Connect to database
// Create Command with query "SELECT COUNT(1) FROM " + TableName.Replace(";","") + " WHERE " + ColumnName.Replace(";","") + " = " + ID
Return int.Parse(myQuery.ExecuteScalar) > 0
//disconnect
}
public boolean UpdateCredit(int CustID, int newCredit) {
//Connect to database
// Create Command with query "UPDATE CustTable SET CustCredit = " + newCredit.ToString() + " WHERE = CustId = " + CustID
myQuery.ExecuteNonQuery
//disconnect
}
public boolean CreateCredit(int CustID, int newCredit) {
//Connect to database
// Create Command with query "INSERT INTO CustTable (CustID, CustCredit) VALUES (" + CustId.ToString + ", " + newCredit.ToString + ")"
myQuery.ExecuteNonQuery
//disconnect
}
次に、あなたのmainメソッドの世界では、
のようなものを読んでIf (CheckExists("CustTable", "CustId", CustID)) {
UpdateCredit(CustID, 10000)
} else {
CreateCredit(CustId, 10000)
}
所属していません StackOverflow