使用C#在数据库中保存数据

时间:2016-07-05 04:42:27

标签: c# asp.net

这里我试图将数据保存在数据库中。无论用户输入什么数据,它都必须保存在数据库中,并且还必须自己保存在页面中。当用户打开必须显示数据的页面时。

用于在数据库中上传数据的代码..

public static void sqlUploadContactInfoData(string[] Userdata)
        {
            using (SqlConnection sqlConn = DBConnection())
            {
                try
                {
                    sqlConn.Open();
                    string spName = "sp_testSample";  //stored procedure
                    SqlCommand cmd = new SqlCommand(spName, sqlConn);
                    cmd.Parameters.AddWithValue("@CnctNum", Userdata[0].ToString());
                    cmd.Parameters.AddWithValue("@AltCnctNum", Userdata[1].ToString());
                    cmd.Parameters.AddWithValue("@EmerCnctNum", Userdata[2].ToString());
                    cmd.Parameters.AddWithValue("@PrsnEmail", Userdata[3].ToString());
                    cmd.Parameters.AddWithValue("@OfsEmail", Userdata[4].ToString());
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Connection = sqlConn;
                    cmd.ExecuteNonQuery();
                }
                catch (SqlException)
                {
                    ErrorMsg("Server Error", "Server Error ! Please try again Later.");
                }
            }
        }

为此,我在sql server中创建了存储过程。

这是存储过程代码,

GO // Stored Procedure
ALTER proc [dbo].[sp_testSample]
@CnctNum varchar(15),
@AltCnctNum varchar(15),
@EmerCnctNum varchar(15),
@PrsnEmail varchar(25),
@OfsEmail varchar(50)

as
    BEGIN
        INSERT INTO Sample
           ([Contact_Num]
           ,[Alt_Contact_Num]
           ,[Emr_Contact_Num]
           ,[Per_Email]
           ,[Ofs_Email])

        VALUES
           (@CnctNum
           ,@AltCnctNum
           ,@EmerCnctNum
           ,@PrsnEmail
           ,@OfsEmail)

    END

Here I am assigning the values to the Button action..
protected void btnContactInfoSave_click(object sender, EventArgs e)
        {
            if (chkContactUpdate.Checked)
            {
                string[] ContactInfoData = new string[6];
                ContactInfoData[0] = GlobalVars.UserEmail;
                ContactInfoData[1] = txtCnct.Text;
                ContactInfoData[2] = txtAltCnct.Text;
                ContactInfoData[3] = txtEmrCnct.Text;
                ContactInfoData[4] = txtPrsnEmail.Text;
                ContactInfoData[5] = txtOfsEmail.Text;
                Utilities.sqlUploadContactInfoData(ContactInfoData);
            }
        }

Here I am calling the action through button..

 <button type="button" class="btn btn-primary" aria-label="Left Align" runat="server" onserverclick="btnContactInfoSave_click" formmethod="get">

When I click the "Save" button it not saving the data and it showing the error..
In the below code it is showing error like Null exception...
An exception of type 'System.ArgumentNullException' occurred in System.Web.Extensions.dll but was not handled in user code


public static void ErrorMsg(string ErrorHeading, string ErrorMsgStr)
        {
            string errorMsgScript = "alert('"+ErrorMsgStr+"');";
            ScriptManager.RegisterClientScriptBlock(null, null, ErrorHeading, errorMsgScript, true);
        }

在上面的ErrorMsg中,我得到Null异常。我调试了代码,数据完美地传递给了每一个领域。 存储过程代码中的任何错误或保存操作代码.. ?? 当我点击按钮错误就是这样,

  

发生了'System.ArgumentNullException'类型的异常   System.Web.Extensions.dll但未在用户代码中处理

上面所有代码的问题是什么.. ??

2 个答案:

答案 0 :(得分:0)

看起来像这一行

 ScriptManager.RegisterClientScriptBlock(null, null, ErrorHeading, errorMsgScript, true);

您不能在没有前两个参数的情况下调用RegisterClientScriptBlock。它应该是这样的:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), ErrorHeading, errorMsgScript, true);

答案 1 :(得分:0)

当您使用array string传递6 index并使用错误的序列可能是您的问题的原因,请在您的代码中替换以下内容:

cmd.Parameters.AddWithValue("@CnctNum", Userdata[1].ToString());
cmd.Parameters.AddWithValue("@AltCnctNum", Userdata[2].ToString());
cmd.Parameters.AddWithValue("@EmerCnctNum", Userdata[3].ToString());
cmd.Parameters.AddWithValue("@PrsnEmail", Userdata[4].ToString());
cmd.Parameters.AddWithValue("@OfsEmail", Userdata[5].ToString());