2016-06-11 21 views
0

我正在爲ASP.NET中的搜索頁面編寫代碼。此代碼將從數據庫根據用戶 寫在文本框的文本,但搜索數據,當我運行的代碼,我得到的NullReferenceException在asp.net中的SqlCommand的NullReferenceExeption

  using System; 
      using System.Collections.Generic; 
      using System.Linq; 
      using System.Web; 
      using System.Web.UI; 
      using System.Web.UI.WebControls; 
      using System.Data; 
      using System.Data.SqlClient; 
      using System.Configuration; 

      namespace FYP_CDMIS_2 
      { 
      public partial class search : System.Web.UI.Page 
      { 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CDMISConnectionString"].ConnectionString); 
      protected void Page_Load(object sender, EventArgs e) 
      { 

      } 

      protected void Button1_Click(object sender, EventArgs e) 
      { 
       string find = "select * from crime where (id = + @id + or crimeStatus like '%' + @status + '%' or crimeType like '%' + @type + '%')"; 
       SqlCommand com = new SqlCommand(find,con); 
       com.Parameters.Add("@id", SqlDbType.Int).Value = TextBox1.Text; 
       com.Parameters.Add("@status", SqlDbType.NVarChar).Value = TextBox1.Text; 
       com.Parameters.Add("@type", SqlDbType.NVarChar).Value = TextBox1.Text; 

       con.Open(); 
       com.ExecuteNonQuery(); 
       SqlDataAdapter da = new SqlDataAdapter(); 
       da.SelectCommand = com; 
       DataSet ds = new DataSet(); 
       da.Fill(ds, "id"); 
       da.Fill(ds, "crimeStatus"); 
       da.Fill(ds, "crimeType"); 
       GridView1.DataSource = ds; 
       GridView1.DataBind(); 
       con.Close(); 
    } 
} 

}

這是例外情況:

Exception:Thrown: "Object reference not set to an instance of an object."(System.NullReferenceException) 
A System.NullReferenceException was thrown: "Object reference not set to an instance of an object." 
Time: 6/11/2016 10:47:05 PM 
Thread:Worker Thread[9308] 

在此行發生異常:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CDMISConnectionString"].ConnectionString); 

碼的設計:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="search.aspx.cs" Inherits="FYP_CDMIS_2.search" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<style type="text/css"> 
    #form1 { 
     height: 43px; 
    } 
</style> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 

    Enter Crime Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <asp:TextBox ID="TextBox1" runat="server" Height="17px" Width="241px"> </asp:TextBox> 
    <asp:Button ID="Button2" runat="server" Text="Button" Width="82px" /> 

</div> 
    <div style="height: 123px"> 
     <asp:GridView ID="GridView1" runat="server"> 
     </asp:GridView> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server"> </asp:SqlDataSource> 
    </div> 
</form> 
</body> 
</html> 
+0

檢查在Web配置文件中的連接字符串 –

+0

你從那裏你的代碼是打破調試它的例外, –

+0

的ExecuteNonQuery不返回任何東西,這就是爲什麼你得到空異常,而不是執行任何查詢使用exceutedatarader並將其存儲在某處,然後分配給適配器,它應該是工作 –

回答

0

那麼在這種情況下,ConfigurationManager.ConnectionStrings["CDMISConnectionString"]這是回訪null,並呼籲該ConnectionString拋出異常。檢查你的配置文件並驗證。您可以也使用空先檢查一下,避免像

var conkeys = ConfigurationManager.ConnectionStrings["CDMISConnectionString"]; 
if(conkeys != null) 
SqlConnection con = new SqlConnection(conkeys.ConnectionString);