Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想使用SQLServer中的存储过程同时将数据从一个表插入到另一个表中_C#_Sql Server_Sql Server 2008_Stored Procedures - Fatal编程技术网

C# 我想使用SQLServer中的存储过程同时将数据从一个表插入到另一个表中

C# 我想使用SQLServer中的存储过程同时将数据从一个表插入到另一个表中,c#,sql-server,sql-server-2008,stored-procedures,C#,Sql Server,Sql Server 2008,Stored Procedures,第一期表格 BookID | BookName | DateIssue | ReturnDate | PersonID | | | | 1 | Sqlserver| 4/4/2015 | 5/5/2015 | 22 我想将tblIssue中的值插入返回表,但无法。。。 第二返回表 BookID | BookName | DateIssue | ReturnDate | PersonID |

第一期表格

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.Filldt

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)

传递参数命令对象。

在=之后出现错误,因为当前上下文中不存在BookId。@Warda是的,您必须设置要插入的书籍的值否您的过程仅将值插入表tblReturnI是否将tbl问题值插入表return???但我对存储过程查询有疑问…为此,您必须使用select into tblReturn from tblIssue。如果有任何条件,也可以添加where子句。