ต้องประกาศตัวแปรสเกลาร์ @

ฉันกำลังดำเนินการ delete อย่างง่าย... ใน SQL Server Profiler แบบสอบถามที่สร้างขึ้นนี้จะแสดง:

DELETE FROM OCRDecibel 
WHERE ConsumerLocation = @ConsumerLocation, Level = @Level,
MaxdbLevelObserved = @MaxdbLevelObserved, City = @City',
N'@ConsumerLocation nvarchar(40), @Level nvarchar(7), @MaxdbLevelObserved nvarchar(2), @City nvarchar(8)',
@ConsumerLocation = N'Walk near Majestic(Railway station area)',
@Level = N'Level 2', @MaxdbLevelObserved = N'84', @City = N'BANGLORE'

นี่เป็นข้อผิดพลาด 2 ข้อ:

ข่าวสารเกี่ยวกับ 137 ระดับ 15 สถานะ 2 บรรทัด 1
ต้องประกาศตัวแปรสเกลาร์ "@ConsumerLocation"
ข่าวสารเกี่ยวกับ 105 ระดับ 15 สถานะ 1 บรรทัด 5
เครื่องหมายคำพูดที่ไม่ปิดหลังสตริงอักขระ '' .

ฉันได้อ่านโค้ด .. และเรียกใช้แบบสอบถามบน SQL แล้ว ยังคงปัญหาเดิม ..ฉันไม่เข้าใจว่าฉันหายไปตรงไหน..

นี่คือรหัส DAL ของฉัน:

private const string DEL_HW =
            @"DELETE FROM OCRDecibel WHERE ConsumerLocation=@ConsumerLocation,Level=@Level,MaxdbLevelObserved=@MaxdbLevelObserved,City=@City";

****************

 using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = DEL_HW;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandTimeout = Configuration.TimeOutSeconds;
                    cmd.Parameters.AddWithValue("@ConsumerLocation", consumerLocation);
                    cmd.Parameters.AddWithValue("@Level", level);
                    cmd.Parameters.AddWithValue("@MaxdbLevelObserved", maxdbLevelObserved);
                    cmd.Parameters.AddWithValue("@City", city);

                    conn.Open();
                    cmd.ExecuteNonQuery();
                    cmd.Dispose();
                    conn.Close();
                }
            }
            return returnval;
        }

ข้อเสนอแนะใด ๆ ที่จะเป็นประโยชน์ ...


person Neeraj Verma    schedule 23.06.2014    source แหล่งที่มา


คำตอบ (1)


คุณอาจต้องการเปลี่ยน SQL ของคุณเพื่อใช้ AND

สิ่งที่ต้องการ

DELETE FROM OCRDecibel 
WHERE ConsumerLocation=@ConsumerLocation
AND Level=@Level
AND MaxdbLevelObserved=@MaxdbLevelObserved
AND City=@City

นอกจากนี้ ฉันคิดว่าการโทรไปที่ cmd.Dispose(); เนื่องจากคุณกำลังใช้บล็อก using

person Adriaan Stander    schedule 23.06.2014
comment
ไม่จำเป็นต้องโทร dispose เนื่องจากคำสั่งการใช้งานจะดูแลเรื่องนั้น - person Eminem; 23.06.2014
comment
ขอบคุณ ..ฉันรู้มาทีหลัง ...คำถามของฉันไม่ถูกต้อง ..ขอบคุณ - person Neeraj Verma; 23.06.2014