2013-08-24 3 views
0

Я довольно новичок в ASP.NET, но у меня есть форма с текстовыми полями, некоторые из которых требуются с помощью RequiredFieldValidator. И как только все будет заполнено, я хочу вставить в свою базу данных. Я читаю о всех разных способах вложения и не уверен в лучшем, самом современном способе делать вставку. Вот что я имею, но продолжаю получать ошибку:ASP.NET вставляет данные формы в базу данных

Ссылка на объект не установлена ​​в экземпляр объекта. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.NullReferenceException: Ссылка на объект не установлена ​​в экземпляр объекта.

Источник ошибки:

Линия 50: Линия, наконец, 51: { Линия 52: conn.Close(); Line 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!"); 
    } 
} 
} 

ответ

1

Вы на самом деле не назначая conn так оно никогда имеет значение.

conn = new SqlConnection(connString); 

Для еще лучшего решения переносите присвоение в оператор using. Смотрите здесь http://www.dotnetperls.com/sqlconnection

1

Из кода вы не создали новый экземпляр SqlConnection

SqlConnection conn = null; 

Изменение этого к;

SqlConnection conn = new SqlConnection(connString); 

Или чтобы убедиться, что вы ловите ошибки при создании нового SqlConnection, добавьте

conn = new SqlConnection(connString) 

В выписке поймать Ьгу просто, прежде чем открыть соединение.

Смежные вопросы