Kev*_*vin 2 c# sql rpgle ibm-midrange
在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
Run Code Online (Sandbox Code Playgroud)
我不熟悉SQL/C#,我想知道是否有办法从文件中进行随机检索(这就是RPG中的"链").基本上我想看看是否存在记录.如果是,请使用一些新信息更新记录.如果没有,那么我想写一个新的记录.我确信这是可能的,但不太确定如何去做.任何建议将不胜感激.
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
}
Run Code Online (Sandbox Code Playgroud)
然后你的主要方法世界读取类似的东西
If (CheckExists("CustTable", "CustId", CustID)) {
UpdateCredit(CustID, 10000)
} else {
CreateCredit(CustId, 10000)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
906 次 |
| 最近记录: |