|
|
|
ถามเรื่อง การเช็กข้อมูลกับ database จะมีหน้านึง ให้ลูกค้ากรอกข้อมูลบัตรเครดิต ให้ตรงทุกส่วน |
|
|
|
|
|
|
|
com.ExecuteScalar() <<< จะได้ rows int
CurrentName = Convert.ToString(com.ExecuteScalar());
|
|
|
|
|
Date :
2010-02-12 10:43:27 |
By :
numenoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่error แล้วคับ
แต่มันไม่เชก ข้อมูลให้ตรงกับ database อะคับ
ช่วยดู code หน่อยคับ
string sqlUserName;
sqlUserName = "SELECT * FROM [Credit Verify]";
sqlUserName += " WHERE([Credit no.] ='" + x + "')";
sqlUserName += " AND ([Type of Card] ='" + DropDownList2.Text + "')";
sqlUserName += " AND ([Name of Bank] ='" + DropDownList1.Text + "')";
sqlUserName += " AND ([Name on Card] ='" + TextBox3.Text + "')";
sqlUserName += " AND ([Expire Date] ='" + TextBox2.Text + "')";
SqlCommand com = new SqlCommand(sqlUserName, Conn);
string CurrentName;
CurrentName = Convert.ToString(com.ExecuteScalar());
if (CurrentName != null )
{
Session.Timeout = 1;
Response.Redirect("step2.aspx");
}
else
{
MessageBox.Show("Credit Card information is Incorrect ");
}
|
|
|
|
|
Date :
2010-02-12 13:19:25 |
By :
k1245689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ExecuteScalar จะ return ค่าของ first row และ first column ออกมา
ปกติจะใช้เพื่อดึงค่าออกจากฐานข้อมูลโดยเขียน code สั้นๆ
ที่เห็นคือ select * >> จากนิยามค่าที่ได้คือ first row และ first column
ซึ่งไม่ทราบว่า column แรกของคุณใช้ type ไหน
ให้เดานะคะ ปกติ coulmn แรกก มักจะเป็น ID ซึ่งในกรณีของ MSSQL จะเป็น Auto Inc แบบ int
ทำให้เกิด Error ในครั้งแรก
ทีนี้พอมาดูครั้งล่าสุดที่คุณแก้มา คุณ Convert ให้เป็น string ทำให้ Type convention error หายไป
แต่สิ่งที่ต้องการคือชื่อกลับไม่ใช่ชื่อที่ต้องการ ทั้งที่น่าจะดึงข้อมูลมาถูก record แล้ว
สรุปคือ ExcuteScalar กับ SqlCommand น่าจะทำงานได้ถูกต้องแล้วค่ะ
เพียงแต่ return ค่าของ Column มาให้ผิด Column >> Select *
ปรับแก้ได้หลายวิธี อย่างเช่น
กำหนด column ที่ return ออกมา และควรจะจำกัดจำนวน record ออกมาด้วยจากนิยาม ExecuteScalar ค่ะ
* ไม่แน่ใจว่า ต้องการ column [Name on Card] หรือเปล่า เอาเป็นว่า สมมุติว่าต้องการค่านี้
SQL >> SELECT TOP 1 [Name on Card] FROM [Credit Verify] WHERE blah..blah;
|
|
|
|
|
Date :
2010-02-12 14:19:40 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือ จะ select มาทุกตัวเลยคับ Credit no ,Type of Card, Name of Bank, Name on Card,Expire Date
มาเชก ให้ตรงกับ database ครับ
|
|
|
|
|
Date :
2010-02-12 14:31:52 |
By :
k1245689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วคับผม
ขอบคุณ ท่าน numenoy และ ท่าน Girls generation II ด้วยคับ
|
|
|
|
|
Date :
2010-02-12 14:33:54 |
By :
k1245689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string sqlUserName;
sqlUserName = "SELECT * FROM [Credit Verify]";
sqlUserName += " WHERE([Credit no.] ='" + x + "')"; <<< อันนี้มี จุด ด้วย ถูกใช่มั้ยครับ
sqlUserName += " AND ([Type of Card] ='" + DropDownList2.Text + "')";
sqlUserName += " AND ([Name of Bank] ='" + DropDownList1.Text + "')";
sqlUserName += " AND ([Name on Card] ='" + TextBox3.Text + "')";
sqlUserName += " AND ([Expire Date] ='" + TextBox2.Text + "')";
SqlCommand com = new SqlCommand(sqlUserName, Conn);
string CurrentName;
CurrentName = Convert.ToString(com.ExecuteScalar()); <<< อันนี้มันไม่ได้ null อยู่แล้ว คุณต้อง check ว่าได้ค่าอะไรตางหาก
if (CurrentName != null )
{
Session.Timeout = 1;
Response.Redirect("step2.aspx");
}
|
|
|
|
|
Date :
2010-02-12 14:46:59 |
By :
numenoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆครับ
ได้แล้วคับ ^^
|
|
|
|
|
Date :
2010-02-12 15:04:55 |
By :
k1245689 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|