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子句。