Сравнение RPG с C # и SQL - PullRequest
       13

Сравнение RPG с C # и SQL

2 голосов
/ 14 апреля 2010

В программе 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 #, мне интересно, есть ли способ сделать случайный поиск из файла (что делает «цепочка»в рпг).В основном я хочу увидеть, существует ли запись.Если это так, обновите запись с некоторой новой информацией.Если это не так, то я хочу написать новую запись.Я уверен, что это возможно, но не совсем уверен, как это сделать.Любой совет будет принята с благодарностью.

1 Ответ

5 голосов
/ 14 апреля 2010

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)
}
...