반응형
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 |