2015년 8월 26일 수요일

C# WinForm ComboBox 함수

c# winform 에서 콤보박스는 종종 사용하게 되는데,
대부분의 경우 콤보박스는 DB에서 코드값을 넣어 사용합니다.(나의 경우)
이때마다 콤보박스을 채우는 함수를 다음과 같이 만들어 놓으면 편합니다.

public void BindCodeCombo(ComboBox cBox,  string MajorCode)
        {

            try
            {

                MySqlConnection Con = new MySqlConnection(connectStr);
                Con.Open();

                MySqlCommand mcd = new MySqlCommand("select 코드, 코드이름 from code ", Con);
                MySqlDataReader mdr = mcd.ExecuteReader();

                Dictionary<string, string> comboSource = new Dictionary<string, string>();

                while (mdr.Read())
                {
                    comboSource.Add(mdr.GetString("코드"), mdr.GetString("코드이름"));
                }

                cBox.DisplayMember = "Value";
                cBox.ValueMember = "Key";
                cBox.DataSource = new BindingSource(comboSource, null);

                Con.Close();

            }
            catch (Exception eM)
            {
                MessageBox.Show(".BindCodeCombo 실행중 오류가 발생하였습니다.\\n "
                                                 + eM.Message.Replace("'", " ").ToString());
            }
        }

2015년 8월 25일 화요일

c# Regex를 이용한 숫자체크

using System.Text.RegularExpressions;

:
:
:

        public string isNumber(string chk)
        {
            string patten = @"[^0-9+]+";
            string buff;
            Regex regex = new Regex(patten);
            buff = regex.Replace(chk, "");
            if (buff.Length > 0 && int.Parse(buff) > 0)
                return buff;
            else
                return "false";
        }

 /**************
메타문자  의미           
------------------------
^        라인의 처음     
$        라인의 마지막   
\w       문자(영숫자) [a-zA-Z_0-9]
\s       Whitespace (공백,뉴라인,탭..)
\d       숫자
*        Zero 혹은 그 이상
+        하나 이상
?        Zero 혹은 하나
.        Newline을 제외한 한 문자
[ ]      가능한 문자들
[^ ]     가능하지 않은 문자들
[ - ]    가능 문자 범위
{n,m}    최소 n개, 최대 m개
(  )     그룹
|        논리 OR
***************/

mySQL 함수 전화번호

mysql에서 전화번호를 반환하는 함수
전화번호가 10자리이고 처음2자리가 '02' 인 경우만 주의


delimiter $$
DROP PROCEDURE IF EXISTS polarisDB.phoneNumber$$
CREATE FUNCTION polarisDB.phoneNumber( pno VARCHAR(20) ) RETURNS VARCHAR(20)
     BEGIN
          DECLARE p_no VARCHAR(20);
  case length(pno)
       
   when 9 then
    set p_no = concat( left(pno,2), '-', mid(pno,3,3), '-', right(pno,4) );
   when 10 then
    case left(pno,2)
     when '02' then
      set p_no = concat( left(pno,2), '-', mid(pno,3,4), '-', right(pno,4) );
     else
      set p_no = concat( left(pno,3), '-', mid(pno,4,3), '-', right(pno,4) );
     end case;
   when 11 then
    set p_no = concat( left(pno,3), '-', mid(pno,4,4), '-', right(pno,4) );
   when 12 then
    set p_no = concat( left(pno,4), '-', mid(pno,4,4), '-', right(pno,4) );
   else set p_no = pno;
  end case;
        RETURN p_no;
       
     END $$
delimiter ;

c# winform 전화번호

        public string PhoneNumber(string pPhone)
        {
            string b = "";
            if (pPhone.Length == 9)
                b = pPhone.Substring(0, 2) + "-" + pPhone.Substring(2, 3) + "-" + pPhone.Substring(5, 4);
            else if (pPhone.Length == 10)
            {
                if (pPhone.Substring(0, 2) == "02")
                    b = pPhone.Substring(0, 2) + "-" + pPhone.Substring(2, 4) + "-" + pPhone.Substring(6, 4);
                else
                    b = pPhone.Substring(0, 3) + "-" + pPhone.Substring(3, 3) + "-" + pPhone.Substring(6, 4);
            }
            else if (pPhone.Length == 11)
                b = pPhone.Substring(0, 3) + "-" + pPhone.Substring(3, 4) + "-" + pPhone.Substring(7, 4);
            else if (pPhone.Length == 12)
                b = pPhone.Substring(0, 4) + "-" + pPhone.Substring(4, 4) + "-" + pPhone.Substring(8, 4);
            else
                b = pPhone;
            return b;
        }

vsftpd FTP 서버 접속은 성공하였으나, "디렉토리 목록 조회 실패" 현상 발생시

FTP Passive 모드를 활성화 필요. 1. vsftpd 설정 변경 /etc/vsftpd/vsftpd.conf 상에 아래 내용 추가 기입 #passive modpasv_enable=YES pasv_min_port=5001 pasv...