在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)
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top