サーバ管理者/開発者メモ書き・Linux、Windows等々

開発情報、サーバ管理・設定、モバイルなどの情報です。

.NET

[ リスト | 詳細 ]

記事検索
検索

全3ページ

[1] [2] [3]

[ 次のページ ]

正規表現 C#

■正規化
■0〜99.9
0.0も0も通る。99.9まで。100NG、100.1NG
Regex regex = new System.Text.RegularExpressions.Regex(@"(^0|^[0-9]{1,2})$|(^[0-9]{1,2}\.[0-9]{1})$");
if (!regex.IsMatch(textBox1.Text))
{
MessageBox.Show(textBox1.Text);
}
■yyyy/mm/ddフォーマット
 1990/01/01の形式
Regex regex = new System.Text.RegularExpressions.Regex(@"^(\d{4})/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$");
if (!regex.IsMatch(textBox1.Text))
{
MessageBox.Show(textBox1.Text);
}

開く コメント(0)

C# TIPS2

■画面遷移間の値渡し(セッション)
// 画面遷移前の Web フォーム
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Page2.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Server.Transfer("~/Page2.aspx");
}

// 画面遷移後の Web フォーム
protected void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage != null)
{
TextBox text1 = (TextBox) Page.PreviousPage.FindControl("TextBox1");
if (text1 != null)
TextBox1.Text = text1.Text;
}
}
■画面遷移間の値渡し(セッション)
※VB.netだけど・・・・
遷移元aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page.aspx.vb" Inherits="Page" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>遷移元</title>
</head>
<body>
<form id="form1" runat="server">
<div>
遷移元<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="遷移" />
</div>
</form>
</body>
</html>


●遷移元vb

Partial Class Page
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Server.Transfer("page2.aspx")
End Sub
End Class


●遷移先aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page2.aspx.vb" Inherits="Page2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>遷移先</title>
</head>
<body>
<form id="form1" runat="server">
<div>
遷移先<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>


●遷移先vb

Partial Class Page2
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsNothing(Page.PreviousPage) Then
Dim txt As TextBox = Page.PreviousPage.FindControl("TextBox1")
Me.TextBox2.Text = txt.Text
End If
End Sub
End Class

開く コメント(0)

C# TIPS1

■コーディング規約(例)
Pascal形式、Camel形式というものがあります。
例えば、Pascal形式::BackColor、Camel形式::backColor ということになりま
す。

種別     形式 例
namespace Pascal System.Drawing
クラス Pascal SampleClass
クラス変数 Camel _sampleField
プロパティ Pascal SampleProperty
ローカル変数 Camel sampleVariable
メソッド Pascal SampleMethod
定数 全大文字 CONSTANT

■Dictionaryの使い方
//必ずnewすること!
Dictionary<String, String > dic= new Dictionary<String, String>();
dic.Add ("ABC", "123");
dic.Add ("BCD", "234");

■文字列比較
// 文字列比較は、Equals。数字は==または !=
if (dic.ContainsKey("ABC").Equals("123")) {
//条件 trueの処理
} else {
//条件 falseの処理
}



■try catch finaly の使い方
try //エラーハンドリング開始
{
//DB接続
//処理
//コミット
}
catch (ArgumentNullException e) //エラー毎にキャッチできる。
//エラー処理の対処方法は、プロジェクトごとで違うため、確認すること。
{
//ロールバック
}
catch (Exception e) //エラー毎にキャッチできる。
{
//ロールバック
//ハンドリングできないエラーはシステムエラーで落とす
throw e;
}
finally
{
//例外発生しても、しなくてもここは通る。
//例えばDBのコネクションを閉じるなどが必要。
}

■switchの使い方
int n = int.Parse(s);
int cost = 0;

switch(n)
{
case 1:
// +25り
cost += 25;
break; //からなずbreakをつける
case 2:
cost += 25;
break;
case 3:
cost += 50;
break;
default:
  //コンソールに出すだけ
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}

■型変換(プリミティブ型のみ)の使い方
//文字列をint型に変換
int i = int.Parse("100");

//文字列をlong型に変換
long l = long.Parse("100");

//文字列をfloat型に変換
float f = float.Parse("100.1");

//文字列をdouble型に変換
double d = double.Parse("100.1");

//文字列をbool型に変換
bool b = bool.Parse("True");


string s;

//int型を文字列に変換
int i = 100;
s = i.ToString();

//long型を文字列に変換
long l = 100L;
s = l.ToString();

//float型を文字列に変換
float f = 100.1F;
s = f.ToString();

//double型を文字列に変換
double d = 100.1;
s = d.ToString();

//bool型を文字列に変換
//sは"True"となる
bool b = true;
s = b.ToString();

※但し、WEBだとunicode等の文字コード変換が求められる可能性があるので、こ
れでうまくいかないかもしれない。


■コーディング規約とクラスの例

//namespace
namespace Test.A001
{
// クラス名 :の後は、派生元(例は画面クラス)
public class SampleClass : Form
{

//定数
//Stringの場合どちらの場合もOK
private const String CONSTANT = "定数サンプル1";
private readonly String CONSTANT_READ ="定数サンプル2";
//String以外は、constでしか書けない。
private const int LUCKY_COUNT =100;


// クラス変数、またはフィールドともいう
//private String _sampleStringFiled=null; と書けという人もいるが、初期はnull
//数値は初期は0
private double _sampleField;
private String _sampleStringFiled;

// プロパティ
// いわゆるgetter / setter
// インスタンスに注意すること。自分のインスタンスのため、thisを付加
internal double SampleProperty
{
set{this._sampleField = value;}
get{return this._sampleField;}
}


// メソッド クラスと同名のメソッドはコンストラクタ
// newされたときに実行されるメソッド
// クラスの変数初期化などが行われる
public SampleClass()
{
InitializeComponent();
}


// メソッド1
// 戻り値はint型
private int TestMethod(String mojiTest, int iCountter)
{
//ローカル変数
       int iCount = 0;

try //エラーハンドリング
{
//処理
}
catch (ArgumentNullException e) //エラー毎にキャッチできる。
//エラー処理の対処方法は、プロジェクトごとで違うため、確認すること。
{
throw new ArgumentNullException();
}
catch (Exception e) //エラー毎にキャッチできる。
{
throw e;
}

return iCount;
}

// メソッド2
// メソッドは同じでも、引数が違うため、呼び出される時に、引数で判断される
// オーバロードと呼ばれる機能
// voidは戻り値なし
private void TestMethod(String mojiTest)
{
//ローカル変数
       int iCount = 0;

// void指定なので、戻り値はなし
return;
}
}
}

開く コメント(0)

前の記事と同様に、データセットを利用して、データの保管場所にキャッシュとしてのエリアを確保してみました。
データセットは、実際のDBから取得する方法と、勝手に自分で自作できます。
キャッシュの扱いは、コードでもかけますが、あえて、GUIを使った例を記載します。

sampledbDataSet.xsdというデータセットのファイルに、
キャッシュ用に、DataTable1というテーブルを作成、保管1、保管2という列を作成します。
この段階では、データは、当然ありません。

以下はサンプルです。

Dim ds As DataSet = New sampledbDataSet
Dim Dt As New sampledbDataSet.DataTable1DataTable
Dim row As DataRow
Dt = ds.Tables("DataTable1")


row = Dt.NewRow()
row("保管1") = "TEST太郎"
Dt.Rows.Add(row)
Console.Write("1" & Dt.Rows(0)("保管1"))
Console.Write("2" & Dt.Rows(0)("保管2"))


実際は、保管1に、TEST太郎という登録ができます。メモリ上でのみの展開なので注意です。

ですが、1点注意。同じメソッド内ならこれで使えますが、インタンスが開放されてしまうので、
下記のように別メソッドで内容を呼びたい場合は、クラス内の変数として保持する必要があります。

’−−−−−− これをクラス変数に −−−−−−
   Dim ds As DataSet = New sampledbDataSet
Dim Dt As New sampledbDataSet.DataTable1DataTable
’−−−−−−−−−−−−−−−−−−−−−−−

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dt = ds.Tables("DataTable1")

Console.Write("1" & Dt.Rows(0)("保管1"))
Console.Write("2" & Dt.Rows(0)("保管2"))
End Sub

開く コメント(0)

データベース操作にも多種多様にありますが、今回は、データアダプターを利用したものを記載します。

新規で、データセットを作成し、操作したいデータベース、テーブルを、セットします。
GUIでできていくので、コマンドに慣れている人は変かもしません。
ここでは、工番というテーブルに、項目名、項目番号というフィールドを用意しました。
次に、GUIでクエリーの追加をし、引数として、@項目番号とします。
update 工番 set 項目番号 = @項目番号 というような感じで。
そうするとGUI場のdataAdapterに、追加されます。
sampledbDataSetという、ファイル名(クラス名)で設定しました。

以下はサンプル。
SELECTとupdateをしています。deleteも応用でできますし。Selectも同様に可能です。
SQLを直接書かない分、いいのかわるいのか、私にはわかりませーーーん。
私はガリガリ書いたほうが、いいと思ってますけど。。



Dim Dta As New sampledbDataSetTableAdapters.工番TableAdapter
Dim Dst As New sampledbDataSet
Dim Dtb As New sampledbDataSet.工番DataTable

'SELECT
Dta.Fill(Dtb)
Console.WriteLine(Dtb.Rows)
Console.Write(Dtb(0).項目名)
Dtb(0).項目名 = "TEST太郎"

Dta.FillBy(Dtb, 99999)
Console.Write(Dtb(0).項目名)

Dtb(0).項目番号 = 8888
Dta.UpdateQuery(Dtb(0).項目番号)

以上です。
仮想テーブルが、データテーブルという形で、もてそうなので、応用できるかもしれません。
一度調査してみます。

開く コメント(0)

全3ページ

[1] [2] [3]

[ 次のページ ]


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事