Programming/C# - Window

C#/ '@' 기호 사용

esoog Polaris 2023. 10. 18. 22:51
반응형

1. SQL 쿼리 매개변수에서 사용됩니다.
   - 예를 들어 `qry` 문자열에 `"@Name"`, `"@Price"`, `"@cat"`, `"@img"`와 같은 `@` 기호가 사용됩니다. 이러한 `@` 기호는 SQL 매개변수를 나타내며, 실제 SQL 쿼리 실행 시 이러한 매개변수에 값이 바인딩됩니다.
   - 이 경우 `@` 기호는 C#에서 SQL 매개변수를 나타내는 것이며, 이 매개변수를 사용하여 SQL 인젝션을 방지할 수 있습니다.

 


2. C# 문자열 리터럴(verbatim string literal)에서 사용됩니다.
   - C#에서 문자열 리터럴을 나타내기 위해 `@` 기호를 사용할 수 있습니다. 이렇게 하면 문자열 내의 이스케이프 문자를 처리하지 않고 그대로 문자열로 유지됩니다.
   - 예를 들어 `string qry = @"Insert into products Values(@Name, @Price, @cat,@img )";`에서의 `@`는 C# 문자열 리터럴을 나타내며, SQL 쿼리 문자열에서 `@` 기호가 문자열 그대로 유지되는 것을 의미합니다.

 

 

# 예시

        public override void btnSave_Click(object sender, EventArgs e)
        {
            if (txtName.Text =="")
            {
                guna2MessageDialog1.Show("상품명을 입력해주세요");
                return;
            }

            try
            {
                if (txtPrice.Text=="")
                {
                    guna2MessageDialog1.Show("가격을 입력해주세요");
                    return;
                }
                int price = int.Parse(txtPrice.Text);
            }
            catch (FormatException)
            {
                guna2MessageDialog1.Show("숫자만 작성해주세요");
                return;
            }

            if (cbCat.SelectedItem == null)
            {
                guna2MessageDialog1.Show("카테고리를 선택해주세요");
                return;
            }

            if (txtImage.Image == null)
            {
                guna2MessageDialog1.Show("이미지를 입력해주세요");
                return;
            }

            string qry = "";
            if (id == 0)
            {
                qry = "Insert into products Values(@Name, @Price, @cat,@img )";
            }
            else
            {
                qry = "Update products set pName = @Name, pPrice = @Price, CategoryID=@cat, pImage = @img  where pID = @id";
                this.Close();
            }

            //image
            Image temp = new Bitmap(txtImage.Image);
            MemoryStream ms = new MemoryStream();
            temp.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
            imageByteArray = ms.ToArray();

            Hashtable ht = new Hashtable();
            ht.Add("@id", id);
            ht.Add("@Name", txtName.Text);
            ht.Add("@Price", txtPrice.Text);
            ht.Add("@cat", Convert.ToInt32(cbCat.SelectedValue));
            ht.Add("@img", imageByteArray);


            if (MainClass.SQL(qry, ht) > 0)
            {
                guna2MessageDialog1.Show("Saved successfully..");
                id = 0;
                cID = 0;
                txtName.Text = "";
                txtPrice.Text = "";
                cbCat.SelectedIndex = 0;
                cbCat.SelectedIndex = -1;
                txtImage.Image = null;
                txtName.Focus();
            }

        }

        private void ForUpdateLoadData()
        {
            string qry = @"Select * from products where pID = " +id + "";
            SqlCommand cmd = new SqlCommand(qry, MainClass.con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);

            if (dt.Rows.Count>0)
            {
                txtName.Text = dt.Rows[0]["pName"].ToString();
                txtPrice.Text = dt.Rows[0]["pPrice"].ToString();

                Byte[] imageArray = (byte[])(dt.Rows[0]["pImage"]);
                byte[] imageByteArray = imageArray;
                txtImage.Image = Image.FromStream(new MemoryStream(imageArray));

            }
        }



728x90

'Programming > C# - Window' 카테고리의 다른 글

C#/ Can 통신과 Lin 통신에 관해  (0) 2023.11.03
C#/ DLL 파일 관련  (0) 2023.11.03
C#/ Crystal Reports 사용  (0) 2023.10.18
C#/ HTTP 통신  (0) 2023.10.13
C#/ MSSQL에 DB(.sql) 설치 프로그래밍  (0) 2023.10.13