我是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!");
}
}
}
答案 0 :(得分:1)
您实际上并未指定conn
,因此它永远不会有值。
conn = new SqlConnection(connString);
为了更好的解决方案,将赋值包装在using语句中。 见http://www.dotnetperls.com/sqlconnection
答案 1 :(得分:1)
您的代码中尚未创建SqlConnection
SqlConnection conn = null;
将此更改为;
SqlConnection conn = new SqlConnection(connString);
或者为了确保在创建新的SqlConnection时捕获任何错误,请添加
conn = new SqlConnection(connString)
在打开连接之前进入try catch语句。