2017-03-13 6 views
-3

私はホテル上のシンプルなデータベースを持っています。これはクリーニングサービス用ですので、 "status"という名前の列があります。この列はint型で、新しい部屋がデータベースに追加されると0と定義されます。asp.netとC#のデータベース値を変更するには?

問題この列の値の出力を "0"ではなく "クリーニングしない"ようにしたいと思います。値が "1"の場合は "Cleaned"となります。

どのように私はこれを最も簡単な方法で可能にすることができますか?私はVisual Studio 2015を使用しています。

ありがとう!

string Cleaned = row["status"]?"Cleaned":"Not Cleaned" 

あなたが望むように、文字列を使用します。データベースがbitないあなたが次の操作を行うことができますintとしてこれらを記憶していると仮定すると、

+0

最も簡単な方法は?ブール値をデータベースのvarcharに変更してください.... –

+0

それはintか少しですか?どのように表示していますか?データベースを変更したいのですか、値を表示するだけでしたか?あなたのコードは何ですか?私はその質問に答えましたが、私の答えはあなたの悪い質問のために私が望むよりも多くの前提を作ります。 – Andrew

+0

まあ、私は私の質問で言ったように:それはintであり、また私の(悪い)質問で言及したように、intの代わりにテキストとして値を表示したい。値を0から1に変更する場合は、ユーザーが「ステータス」を変更した場合でも、データベースにvarcharとして値を格納する必要はありません。私はまだコードがないので、私はこの質問をしました。私はしばしばPHPでコード化し、 "if(status == 0){echo" Not clean ";} else if(status == 1){echo" Cleaned ";}"のような解決策を望みます。 – Rodin

答えて

1

DBを実際に変更したい場合は、文字列の値として新しい列を作成するか(または既存のものをさらに硬く変更する)VARCHAR(15)(実際には11のみ必要ですが私は安全のためにパッド)、それからあなたの古い列のビットに基づいてそれを更新してください。

UPDATE {Table} SET {NewColumn}=IIF(status=1,'Cleaned','Not Cleaned') 
0

エンティティフレームワークを使用しており、列挙型の格納を参照していると仮定します。

これが正しければ、このリンクチェック:あなたはSQL UPDATEコマンドを使用する必要があり、この後OLEDB connectionを使用する必要が How to save enum in database as string

0

を。これは、次のようになります。

UPDATE your table name SET status='Cleaned' WHERE status=1; 
+0

タイプの不一致によりエラーが発生した場合はどうなりますか?ステータスがvarcharよりもintまたはbitである可能性が高く、さらに数値を格納するために書いた場合は11文字に収まらないことがあります。 – Andrew

1

最も簡単な方法ではなく、最も正しい設計が、最も簡単な

public enum RoomStatus : int 
{ 
    NotCleaned = 0, 
    Cleaned = 1 
} 

static void Main(string[] args) 
{ 
    var e1 = (RoomStatus)0; 
    var e2 = (RoomStatus)1; 
} 
+0

ありがとうございます。私はこれを試してみよう! – Rodin

関連する問題