题
在RPG程序(一个IBM的语言对AS / 400),我可以“产业链”到一个文件,看是否有记录(比如,有一定的客户记录)的文件中存在。如果是这样的话,我可以立即更新记录新数据。如果记录不存在,我可以写一个新的记录。该代码是这样的:
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
由于不是真正的熟悉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
}
然后你的主要方法,世界看像
If (CheckExists("CustTable", "CustId", CustID)) {
UpdateCredit(CustID, 10000)
} else {
CreateCredit(CustId, 10000)
}
不隶属于 StackOverflow