【发布时间】:2011-02-17 14:24:00
【问题描述】:
我有这个无法正常工作的存储过程。如果我在管理工作室尝试这个查询并填写了我的参数,我看不到我的代码是否做错了,但我希望这里有人注意到我做错了什么
CREATE PROCEDURE new_project
-- Add the parameters for the stored procedure here
@proj_naam nvarchar = null,
@plaats nvarchar = null,
@opd_geef int = 0,
@status int = 0,
@proj_id int = 0 AS BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO project (naam_project, plaats, opdrachtgeverZEEBREGTS_nr, status, project_NR)
VALUES (@proj_naam, @plaats, @opd_geef, @status, @proj_id) END GO
和c#代码:
System.Data.SqlClient.SqlConnection con;
con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = Global.ConnectionString_fileserver;
con.Open();
string stopro = "";
switch (type)
{
case 1:
stopro = "new_project";
break;
case 2:
stopro = "new_bedrijf";
break;
case 3:
stopro = "new_persoon";
break;
}
SqlCommand command = new SqlCommand(stopro, con);
command.CommandType = CommandType.StoredProcedure;
switch (type)
{
case 1:
SqlParameter proj_naam = command.Parameters.Add("@proj_naam", SqlDbType.NVarChar);
SqlParameter plaats = command.Parameters.Add("@plaats", SqlDbType.NVarChar);
SqlParameter opdrachtgever = command.Parameters.Add("@opd_geef", SqlDbType.Int);
SqlParameter status = command.Parameters.Add("@status", SqlDbType.Int);
SqlParameter proj_id = command.Parameters.Add("@proj_id", SqlDbType.Int);
proj_naam.Value = tb_proj_projectnaam.Text; proj_naam.Direction = ParameterDirection.Input;
plaats.Value = tb_proj_plaats.Text; plaats.Direction = ParameterDirection.Input;
opdrachtgever.Value = cb_proj_opdrachtgever.SelectedValue; opdrachtgever.Direction = ParameterDirection.Input;
status.Value = cb_proj_status.SelectedValue; status.Direction = ParameterDirection.Input;
proj_id.Value = id; proj_id.Direction = ParameterDirection.Input;
break;
}
int nwok = command.ExecuteNonQuery();
con.Close();
所以我希望有人可以提前帮助!
【问题讨论】:
-
它会抛出特定的错误吗?
-
你能定义“行不通”吗?它会给出错误消息,还是不返回任何内容?它是否真的到达了 ExecuteNonQuery 行,因为它是在休息之后,但这可能是因为你剪掉了一些代码。
-
没有错误,int nwok 存储受影响的行数,所以如果添加一行,它将返回 1,如果不是 0,我只会得到 0。如果我检查我的数据库新行不存在。所以它什么也没做。
-
另外,我很抱歉,但我只需要说显而易见的,因为我自己以前做过。您确定您使用的是正确的 SQL Server 吗?我无法告诉你我对 Dev 执行了多少次,但对 Live 进行了检查。
-
@Chris Haas,哈哈,幸运的是,事实并非如此。这个问题现在已经解决了(谢谢你们)现在我需要找出为什么他从上次添加新记录而不是下一个最小的不存在的 nr 开始一直使用 ID# .. 所以我将有事可做这个周末:)
标签: c# stored-procedures sql-server-2008-r2