2009/04/16

SQLServerで、インジェクション対策や、エスケープ処理

SQLServerで、インジェクション対策や、エスケープ処理を行うのにParameters.Add( sqlStr )が
使いづらいので下記のメソッドを作成しました。
※ネタ元は、右記のURLです。http://msdn.microsoft.com/ja-jp/library/aa302392.aspx



        private string escape( string param)
        {
            string str = param;
            str  = str .Replace( "'", "''" );
            str  = str.Replace( "[", "[[]" );
            str  = str.Replace( "%", "[%]" );
            str  = str.Replace( "_", "[_]" );
            return s;
        }

2009/04/15

アプリケーションの終了

C#でApplication.Exit() を実行しても、その後の処理が行われる事にビックリしている人は多いのではないでしょうか?

その後の処理を実行されなくするには、下記を実行します。

Environment.Exit(0);

※(0)は戻り値です。任意で設定可能です。
 よくあるパターンでは、0は正常終了、1は○○エラー、2は■■エラーという様に分岐させたりします。

2009/04/06

二重起動の無効化

Program.csふぁいるに下記を追記します。


        ///
        /// アプリケーションのメイン エントリ ポイントです。
        ///
        [STAThread]
        static void Main()
        {
            const string MUTEX_NAME = "MutexApplication";

            // Mutex インスタンスを生成します。二番目の引数 MUTEX_NAME は生成する Mutex の識別名です。
            System.Threading.Mutex mutex = new System.Threading.Mutex( false, MUTEX_NAME );

            // WaitOne メソッドを使って、所有権を得ます。
            // 最初の引数で 0 ミリ秒を指定して、所有権が取得できなくても待ちません。
            if ( mutex.WaitOne( 0, false ) )
            {
                // 下記の色付のコードはデフォルトで記入されているコードです。
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault( false );
                Application.Run( new Form1() );

                mutex.ReleaseMutex();
            }
            else
            {
                // WaitOne メソッドで所有権を取得できなかった場合の処理です。
                MessageBox.Show( "アプリケーションは既に起動しています。", "タイトル");

            }

            mutex.Close();
        }

フォーム右上の閉じるボタン無効化

protected override System.Windows.Forms.CreateParams CreateParams {
get {
const int CS_NOCLOSE = 0x200;

System.Windows.Forms.CreateParams createParams = base.CreateParams;
createParams.ClassStyle |= CS_NOCLOSE;

return createParams;
}
}

2009/04/03

//モーダル表示
form.ShowDialog();

//モーダレス表示
form.Show();


show()      はモーダレス
ShowDialog() はモーダルで
指定フォームを表示します。

C# ファイルの読取専用属性を解除

using System.IO;

下記で属性が外せます。

File.SetAttributes(ファイルパス,FileAttributes.Normal);

//ふぁいる属性取得(FileAttributes列挙体を返す)
File.GetAttributes(@"c:\hoge\hoge.txt");

//読み取り専用属性があるか調べる
if ((File.GetAttributes(@ファイルパス) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
"読み取り専用属性があります。";
}