Hỏi về phương thức Parameters.Add của DbCommand

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Moderators: tungblt, vuathongtin

Post Reply
hahuuhai
Thành viên năng nổ
Thành viên năng nổ
Posts: 61
Joined: Mon 13/04/2009 8:38 am
Location: Thạch Thành, Thanh Hóa

Hỏi về phương thức Parameters.Add của DbCommand

Post by hahuuhai »

Xin hỏi: Tại sao đoạn chương trình này lại bị lỗi được?

  1. private DataTable LenhSelect(string TenDN, string MK)
  2. {
  3.     DbProviderFactory fac = DbProviderFactories.GetFactory("System.Data.SqlClient");
  4.     DbDataAdapter da = fac.CreateDataAdapter();
  5.     DataTable dt = new DataTable();
  6.     DbConnection cnn = fac.CreateConnection();
  7.  
  8.     cnn.ConnectionString = "Data Source=.;Initial Catalog=DuLieu;Integrated Security=True;Persist Security Info=False";
  9.     cnn.Open();
  10.  
  11.     DbCommand Cmd = fac.CreateCommand();
  12.     Cmd.Connection = cnn;
  13.     Cmd.CommandText = "procTaiKhoan_Sel";
  14.  
  15.     DbParameter mPar_TenDN = fac.CreateParameter();
  16.     mPar_TenDN.ParameterName = "@TenDangNhap";
  17.     mPar_TenDN.DbType = DbType.String; mPar_TenDN.Size = 30;
  18.     mPar_TenDN.Value = TenDN;
  19.     Cmd.Parameters.Add(mPar_TenDN);
  20.  
  21.     DbParameter mPar_MatKhauM1K = fac.CreateParameter();
  22.     mPar_MatKhauM1K.ParameterName = "@MatKhauM1K";
  23.     mPar_MatKhauM1K.DbType = DbType.String; mPar_TenDN.Size = 32;
  24.     mPar_MatKhauM1K.Value = MK;
  25.     Cmd.Parameters.Add(mPar_MatKhauM1K);
  26.  
  27.     da.SelectCommand = Cmd;
  28.     try
  29.     {
  30.         da.Fill(dt);
  31.     }
  32.     catch (Exception Exc)
  33.     {
  34.         MessageBox.Show(Exc.Message);
  35.     }
  36.    
  37.     return dt;
  38. }


Khi chạy, nó báo:
Procedure or function 'procTaiKhoan_Sel' expects parameter '@TenDangNhap', which was not supplied.
Vậy chỗ này thì nó tính sao nhỉ!?
Ảnh.jpg
Ảnh.jpg (29.95 KiB) Viewed 918 times
Rất mong mọi người giải đáp giùm!
Attachments
Hỏi.rar
Mã nguồn
(35.44 KiB) Downloaded 180 times
DuLieu.rar
Dữ liệu
(279.29 KiB) Downloaded 182 times
User avatar
vuathongtin
Điều hành viên
Điều hành viên
Posts: 1028
Joined: Sun 02/05/2010 10:03 pm
Location: Xứ sở DG
Has thanked: 2 times
Been thanked: 105 times
Contact:

Re: Hỏi về phương thức Parameters.Add của DbCommand

Post by vuathongtin »

Xem lại đoạn này (chỗ ghi chú của mình)
  1.       DbCommand Cmd = fac.CreateCommand();
  2.         Cmd.Connection = cnn;
  3.       //  Cmd.CommandType = CommandType.StoredProcedure;
  4.         Cmd.CommandText = "procTaiKhoan_Sel"; // Xem lại store procedure của bạn, truyền tham số thế nào
Bùi Thành Nhân
* Chuyên gia MMO
congtacvien.online
hahuuhai
Thành viên năng nổ
Thành viên năng nổ
Posts: 61
Joined: Mon 13/04/2009 8:38 am
Location: Thạch Thành, Thanh Hóa

Re: Hỏi về phương thức Parameters.Add của DbCommand

Post by hahuuhai »

Quên, nó là hàm chứ không phải phương thức.

Nhưng không rõ bạn đưa ra ghi chú trên nghĩa là thế nào? :-/
Cũng không rõ là bạn đã xem qua cái SP trong CSDL đính kèm chưa, hay là xem rồi mà thấy chưa đúng?
Điều đáng nói là khi dùng với hàm tương ứng bên SqlCommand thì lại chạy ngon lành!...
#:-S :-?


(22/06/2011)
Chấp nhận câu trả lời của bạn. Cảm ơn nhiều!
Cmd.CommandType = CommandType.StoredProcedure;
Last edited by hahuuhai on Wed 22/06/2011 7:10 am, edited 1 time in total.
User avatar
vuathongtin
Điều hành viên
Điều hành viên
Posts: 1028
Joined: Sun 02/05/2010 10:03 pm
Location: Xứ sở DG
Has thanked: 2 times
Been thanked: 105 times
Contact:

Re: Hỏi về phương thức Parameters.Add của DbCommand

Post by vuathongtin »

Cậu phải xác định loại Command cần thao tác là Store hay Text (chuỗi truy vấn), chứ bình thường bạn ko khai báo loại Command thì nó tự hiểu là Text

Code: Select all

   Cmd.CommandType = CommandType.StoredProcedure;
p/s : sorry, mình chưa rảnh để xem SP của bạn
Bùi Thành Nhân
* Chuyên gia MMO
congtacvien.online
Post Reply

Return to “Visual Basic .NET và C# (VB.NET & C#)”