簡體   English   中英

ASP.NET將表單數據插入數據庫

[英]ASP.NET inserting form data into database

我是ASP.NET的新手,但我有一個帶有文本框的表單,其中一些是使用RequiredFieldValidator所必需的。 一旦所有內容都填寫完畢,我想插入我的數據庫。 我正在閱讀所有不同的方法,並且不確定最佳,最新的插入方式。 這是我的所有,但不斷收到錯誤:

你調用的對象是空的。 描述:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤以獲取有關錯誤及其源自代碼的位置的更多信息。

異常詳細信息:System.NullReferenceException:未將對象引用設置為對象的實例。

來源錯誤:

第50行:終於第51行:{第52行:conn.Close(); 第53行:}第54行:}

C#代碼 - 我唯一想要插入的是具有ID = BookingName的文本框

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using System.IO;
using System.Net.Mail;
using System.Data.SqlClient;

public partial class _Default : BasePage
{


     protected void Page_Load(object sender, EventArgs e)
        {
           // BookingName.Text = "test";
        }

private void ExecuteInsert(string name)
{
    string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CateringAuthorizationEntities"].ConnectionString;
    SqlConnection conn = null;
    string sql = "INSERT INTO tbBooking (BookingName) VALUES "
                + " (@BookingName)";

    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlParameter[] param = new SqlParameter[1];
        //param[0] = new SqlParameter("@id", SqlDbType.Int, 20);
        param[0] = new SqlParameter("@BookingName", System.Data.SqlDbType.VarChar, 50);

        param[0].Value = name;

        for (int i = 0; i < param.Length; i++)
        {
            cmd.Parameters.Add(param[i]);
        }

        cmd.CommandType = System.Data.CommandType.Text;
        cmd.ExecuteNonQuery();
    }
    catch (System.Data.SqlClient.SqlException ex)
    {
        string msg = "Insert Error:";
        msg += ex.Message;
        throw new Exception(msg);
    }
    finally
    {
        conn.Close();
    }
}

protected void BtnCatering_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {

        //call the method to execute insert to the database
        ExecuteInsert(BookingName.Text);
        Response.Write("Record was successfully added!");
    }
}
}

你實際上並沒有分配conn因此它永遠不會有值。

conn = new SqlConnection(connString);

為了更好的解決方案,將賦值包裝在using語句中。 請參見http://www.dotnetperls.com/sqlconnection

從您的代碼中,您尚未創建SqlConnection的新實例

SqlConnection conn = null;

將此更改為;

SqlConnection conn = new SqlConnection(connString);

或者為了確保在創建新的SqlConnection時捕獲任何錯誤,請添加

conn = new SqlConnection(connString)

在打開連接之前進入try catch語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM