簡體   English   中英

我想使用 SQL Server 中的存儲過程將數據從一個表同時插入到另一個表中

[英]I want to insert data from one table into another at same time using stored procedure in SQL server

第一期表

BookID | BookName | DateIssue | ReturnDate | PersonID
       |          |           |            |
1      | Sqlserver|  4/4/2015 |  5/5/2015  |  22

我想將 tblIssue 中的值插入到返回表中,但是,不能...第二個返回表

BookID | BookName | DateIssue | ReturnDate | PersonID
       |          |           |            |
1      | Sqlserver|  4/4/2015 |  5/5/2015  |  22

查詢正在 sql server 中運行.. 我想,我在 sql server 查詢中有錯誤

Stored proc query:



'CREATE PROCEDURE inserttwo
(
@BookID int,
@BookName nvarchar(50),
@DateIssue datetime,
@ReturnDate datetime,
@PersonID int
)

as

insert into tblReturn(BookID,BookName,DateIssue,ReturnDate,PersonID)
values(@BookID,@BookName,@DateIssue,@ReturnDate,@PersonID)

select * from  tblIssue

C#中的錯誤:

過程或函數“inserttwo”需要參數“@BookID”,
那是不供給的。

這里是指向錯誤:sda.Fill(dt);

C# code: 


 public void storedproc()
        {
      string w = ConfigurationManager.ConnectionStrings["LMS"].ConnectionString;
            SqlConnection conn = new SqlConnection(w);
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand("inserttwo", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            conn.Open();
            sda.Fill(dt);
            metroGrid1.DataSource = dt;
            conn.Close(); }

你必須添加參數

string w = ConfigurationManager.ConnectionStrings["LMS"].ConnectionString;
using (SqlConnection conn = new SqlConnection(w))
{
    DataTable dt = new DataTable();
    using (SqlCommand cmd = new SqlCommand("inserttwo", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@BookID", SqlDbType.Int).Value = BookID;
        cmd.Parameters.Add("@BookName", SqlDbType.NVarChar, 50).Value = BookName;
        cmd.Parameters.Add("@DateIssue", SqlDbType.DateTime).Value = Date;
        cmd.Parameters.Add("@ReturnDate", SqlDbType.DateTime).Value = ReturnDate;
        cmd.Parameters.Add("@PersonID", SqlDbType.Int).Value = PersonID;
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        conn.Open();
        sda.Fill(dt);
        metroGrid1.DataSource = dt;
    }
    conn.Close();
}

該過程需要@BookID,@BookName,@DateIssue,@ReturnDate,@PersonID因此您必須添加它們並用值填充它們。

更新要將數據插入到 2 個表中,您的過程應該看起來像這樣,而無需知道您的表結構,就不可能給您一個有效的答案

'CREATE PROCEDURE inserttwo
(
@BookID int,
@BookName nvarchar(50),
@DateIssue datetime,
@ReturnDate datetime,
@PersonID int
)

as

insert into tblReturn(BookID,BookName,DateIssue,ReturnDate,PersonID)
values(@BookID,@BookName,@DateIssue,@ReturnDate,@PersonID)

insert into tblIssue(BookID,BookName,DateIssue,ReturnDate,PersonID)
values(@BookID,@BookName,@DateIssue,@ReturnDate,@PersonID)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM