2017-10-19 5 views
0

C#で以下のコードをMySQLスニペットに変えたいと思いますか?C#コードをmysql関数に変換する

foreach (DataRow row in dtBills.Rows) 
      { 
       classes.UtilityBill ub = new classes.UtilityBill(row); 

       if (ub.ApprovedBy > 0) 
       { 
        if (ub.RemainingBalance() > 0) { totalOutstanding += ub.RemainingBalance(); numberOfUnpaidBills++; } 
        if (ub.RemainingBalance() > 0 && ub.IsOverDue()) { numberOfOverdueBills++; } 
       } 
       else 
       { 
        if (ub.ApprovedBy == 0) 
        { 
         awaitingApproval++; 
        } 
        else 
        { 
         rejectedBills++; 
        } 
       } 
      } 

ub.RemainingBlaance()基本的にAMOUNT_DUE、2つのテーブルのフィールドと減算をチェックするには - 私は戻ってきているよ何

をによってAmount_Paidようになります単一の行です:

totalOutstanding, numberOfUnpaidBills, numberOfOverdueBills, awaitingApproval, rejectedBills 

オリジナルテーブル:

enter image description here 私はこれは怠惰な質問のように出くわすかもしれないことを知っているが、私は、HA mysqlでのコーディングを扱ったことはありません。単純なクエリです。どのように起動するかについてはわかりません。正しい方向へのプッシュで十分ですが、完全な解決策ではありません。

ありがとうございます!

+1

を...あなたのテーブルには、どのようなもの?列名は何ですか? –

+0

私の悪い、テーブルの画像を追加しました:) –

+0

あなたはエンティティの関係を見てきましたか?そのようなもののためのものです –

答えて

0

mysqlを照会するにはmysql.dataナゲットパッケージを使用できます。あなたはその文書を見ることができます。私はc#フレームワークからmysqlへのコードを単純化するためにナゲットを作成しました。サードパーティのナゲットを気にしないなら、試してみることができます。それはmysql.simpleと呼ばれます。私は、コードがやろうとしているものから理解するものから、ここにデータを引っ張るための小さなコードです:上記

using (Database db = ConnectionString) // initializes connection 
{ 
    // you can omit the below select function if you would like to select all 
    using (var Row = db.Select("unit_cost, start_reading") 
         From("tblName").Query() 
    while(Row.Read()){ // gets each row 
     ub.unit_cost = Row["unit_cost"]; 
     ub.start_reading= Row["start_reading"]; 
     . 
     . 
     . 
    } 
} 

dbオブジェクトは、更新を選択し、選択してINSERT文を含むすべてのバリエーションを持つ関数を挿入しています。ただし、生のSQL問合せを使用する場合は、db.Query(「SQL問合せ」を参照)を直接使用できます。あなたはここにhttp://mysqlsimple.azurewebsites.net/docsにここ

をより多くのドキュメンテーションを参照することができ、私は私と一緒にいたサンプルMySQLのストアドプロシージャです:

DELIMITER // 
DROP PROCEDURE IF EXISTS proc_IF; 
CREATE PROCEDURE proc_IF (IN param1 INT) 
BEGIN 
    DECLARE variable1 INT; 
    SET variable1 = param1 + 1; 

    IF variable1 = 0 THEN 
    SELECT variable1; 
    END IF; 

    IF param1 = 0 THEN 
    SELECT 'Parameter value = 0' ; 
    ELSE 
    SELECT 'Parameter value <> 0' ; 
    END IF; 

END // 

この例では、パラメータ、変数とif文の例が含まれています。

あなたは、C#でこのような何か、これを呼び出すことができます:あなたは上記のコードのいずれかのデータベース接続を持っているように見えません

db.QueryValue("CALL proc_IF (@0)", myVal); 
+0

かなりクールなナゲット!私はそれを見ています。しかし、それは実際に私が探しているものではありません。私が欲しいのは、計算をデータベース上で行い、その結果として返されることです。最初にデータベースの行を照会するのではなく、それをループしてサーバー側で計算します。この場合、 –

+0

mysqlでストアドプロシージャを作成してC#で使用することができます。これはSQLインジェクションを防ぐのにも役立ちます。しかし、mysqlのストアドプロシージャは、少なくともSQL Serverと比べて、扱いにくいです。計算が単純な場合は、単一のSQLを使用してコードを生成できます。例えば ​​'SELECT mount_due - amount_paid' –

+0

これは私が探しているものです。私はSPを作成するのに慣れていますが、IF、ケース、変数を使用することはありません。そのような例を望んでいた。 –

関連する問題