Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Làm việc với nhiều table sử dụng SqlDataAdapter, DataSet và procedure

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    22

    Angry Làm việc với nhiều table sử dụng SqlDataAdapter, DataSet và procedure

    Chào các bạn!
    Mình đang học ADO.Net. Mình có một số vấn đề về việc update dữ liệu từ DataSet vào Database sử dụng procedure. Nếu là một bảng đơn không liên quan gì đến nhau thì mình làm được rồi, nhưng vấn để ở chỗ nếu 2 table đó có quan hệ với nhau. Như sau:

    Mình có 2 table BorrowSheets(bsID,sID,bsDate) BorrowSheetDetails(bsID,bID,bNumber)

    với bsID của table BorrowSheetDetails là khóa ngoại của table BorrowSheets.

    và 1 procedure như sau:

    create proc AddBorrowBook
    @sID int,
    @bsDate datetime,
    @bID int,
    @bNumber int
    as
    insert into BorrowSheets(sID,bsDate) values(@sID,@bsDate)
    declare @bsID int
    select top 1 @bsID = bsID from BorrowSheets where bsStatus = 1
    insert into BorrowSheetDetails(bsID,bID,bNumber) values(@bsID,@bID,@bNumber)


    Với 2 table đó mình đã load dữ liệu vào DataSet rồi nhưng khi muốn insert dữ liệu sử dụng procedure AddBorrowBook code như sau:
    //method lấy dữ liệu từ Database vào DataSet
    public void showBorrow()
    {
    string sql = "select * from BorrowSheets;select * from BorrowSheetDetails";
    SqlCommand command = new SqlCommand();
    command.Connection = this.connect;
    command.CommandText = sql;
    this.dataAdapter.SelectCommand = command;
    this.dataAdapter.Fill(this.dataSet);
    this.dataAdapter.FillSchema(this.dataSet,SchemaTyp e.Source);
    this.dataSet.Tables["Table"].TableName = "BorrowSheet";
    this.dataSet.Tables["Table1"].TableName = "BorrowSheetDetail";
    this.dataSet.Relations.Add(
    new DataRelation("BorrowBook", this.dataSet.Tables["BorrowSheet"].Columns["bsID"], this.dataSet.Tables["BorrowSheetDetail"].Columns["bsID"]));
    }

    //Method chèn dữ liệu vào DataSet
    public void addBorrowSheet(int sID,DateTime bsDate,int bID,int bNumber )
    {
    DataRow row1 = this.dataSet.Tables["BorrowSheet"].NewRow();
    row1["sID"] = sID;
    row1["bsDate"] = bsDate;
    this.dataSet.Tables["BorrowSheet"].Rows.Add(row1);

    DataRow row2 = this.dataSet.Tables["BorrowSheetDetail"].NewRow();
    row2["bID"] = bID;
    row2["bNumber"] = bNumber;
    //row2.SetParentRow(row1);
    this.dataSet.Tables["BorrowSheetDetail"].Rows.Add(row2);
    }
    //Method update dữ liệu từ DataSet lại Database
    public int update()
    {
    string sql = "AddBorrowBook";
    SqlCommand command = new SqlCommand();
    command.Connection = this.connect;
    command.CommandText = sql;
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@sID", SqlDbType.Int, 0, "sID");
    command.Parameters.Add("@bsDate", SqlDbType.DateTime, 0, "bsDate");
    command.Parameters.Add("@bID", SqlDbType.Int, 0, "bID");
    command.Parameters.Add("@bNumber", SqlDbType.Int, 0, "bNumber");
    this.dataAdapter.InsertCommand = command;
    int a = this.dataAdapter.Update(this.dataSet, "BorrowSheet");
    int b = this.dataAdapter.Update(this.dataSet, "BorrowSheetDetail");
    return a+b;
    }

    Mình làm như này nhưng nó cứ báo lỗi "Procedure or function 'AddBorrowBook' expects parameter '@bID', which was not supplied." mặc dù mình đã kiểm tra các đối rất kỹ ko thiếu, không thừa, không sai. Mong các bạn giúp xem tại sao. Hoặc nếu có giải pháp nào hay hơn thì trả lời giúp mình nhé! Thank all!
    Đã được chỉnh sửa lần cuối bởi rong_do : 30-11-2011 lúc 10:35 PM.

  2. #2
    Ngày gia nhập
    08 2009
    Nơi ở
    C:\Documents and Settings\ME\My Documents\Visual Studio 2010
    Bài viết
    516

    "Procedure or function 'AddBorrowBook' expects parameter '@bID', which was not supplied."
    Debug để chắn chắn giá trị truyền cho @bID khác null.

Các đề tài tương tự

  1. Tạo 1 store procedure lấy dữ liệu của nhiều table !!!
    Gửi bởi duongan2412 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 4
    Bài viết cuối: 04-12-2013, 03:44 PM
  2. MS SQL Lỗi Truyền được tên table vào procedure lỗi Must declare the table variable?
    Gửi bởi khanh120 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 0
    Bài viết cuối: 14-11-2013, 11:55 PM
  3. Có cách nào đưa tất cả table vào 1 dataset không??
    Gửi bởi vienchantam trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 03-10-2012, 03:58 AM
  4. Cách gọi Procedure có tham số từ SqlDataAdapter như thế nào ?
    Gửi bởi manutdvntb trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 12-07-2012, 02:01 PM
  5. Xử lý giúp mình SqlDataAdapter và DataSet trong đoạn code sau
    Gửi bởi NghiDung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 03-03-2010, 02:45 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn