我试图在完成成功之前测试一个简单的插入。 然而,无论我尝试什么,它都无法解决。
关于表单的一些背景知识。 表单包含自动填充数据的标签,其中一些标签需要用户自行输入。我只是使用3个简单的变量来测试。现在,即使我直接嵌入sql,数据也不会进入数据库。
internal void UpdateEPMTRequest2(string EPMTNumber, string name, int status)
{
con.Open();
// var sql = "INSERT INTO EPMT_MASTER_REQUEST (EPMTID, , Status) values (@ePMTNumber, @name, @status)";
// SqlCommand cmd = new SqlCommand("Exec[ePMT_SP_UpdateEPMTRequest2] '2', 'Tanagara', 0");
SqlCommand cmd = new SqlCommand("ePMT_SP_UpdateEPMTRequest2", con);
// SqlCommand cmd = new SqlCommand(sql, con);
// cmd.Parameters.AddWithValue("@action", action);
cmd.Parameters.AddWithValue("@ePMTNumber", EPMTNumber);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@status", status);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
con.Close();
}
private void UpdateEPMTRequest2(string EPMTNumber, string name, int status)
{
try
{
eBiz.UpdateEPMTRequest2(EPMTNumber, name, status);
}
catch (Exception ex) { }
}
internal void UpdateEPMTRequest2(string EPMTNumber, string name, int status)
{
eDAO.UpdateEPMTRequest2(EPMTNumber, name, status);
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (Request.QueryString["EPMTID"] != null)
{
string Action = "SaveUpdate";
string EPMTNumber = Request.QueryString["EPMTID"].ToString();
int status = Convert.ToInt32(ViewState["CStatus"].ToString());
// UpdateEPMTRequest(Action, EPMTNumber, status);
Response.Redirect("ePMTDraft.aspx?msg=1");
}
else
{
// string Action = "Save";
if (Request.QueryString["EPMTID"] == null)
if (status == 0)
try
{
EPMTNumber = Request.QueryString["EPMTID"].ToString();
// UpdateEPMTRequest(Action, EPMTNumber, status);
UpdateEPMTRequest2(EPMTNumber, name, status);
}
catch (Exception ex) { }
Response.Redirect("ePMTDraft.aspx?msg=1");
}
}
ALTER PROCEDURE [dbo].[ePMT_SP_UpdateEPMTRequest2]
-- Add the parameters for the stored procedure here
@ePMTNumber varchar(20),
@name varchar(100),
@status int
AS 开始 - 添加SET NOCOUNT ON以防止出现额外的结果集 - 干扰SELECT语句。 SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO EPMT_MASTER_REQUEST (EPMTID, IssuerName, status) values (@ePMTNumber, @name, @status)
END
这种情况下的名称是一个自动填充的字段,它有一个会话值,我不知道是否应该使用会话值而不是字符串名称。
另一个问题是该名称给我一个错误 - 在上下文中找不到。该名称实际上是标签lblInititor.text。
答案 0 :(得分:0)
在sql语句的注释代码中,列数和INSERT的值数不匹配。
如果你在storwd proc中使用相同的语句那么可能是错误的原因。
如果您调试并查看异常详细信息,您应该能够看到错误。
您需要更改插入语句,如下所示。
var sql = "INSERT INTO EPMT_MASTER_REQUEST (EPMTID, Name, Status) values (@ePMTNumber, @name, @status)";
我不确定表格的确切列名,所以我认为它是“名字”。
如果这样做,你需要在存储过程中使用相同的查询。
这可以解决您的问题。