C#System.NullReferenceException,即使已初始化
本文关键字:初始化 NullReferenceException C#System | 更新日期: 2023-09-27 17:59:12
我正在使用C#,并试图将一行插入SQL表中。我有以下代码。
string spaceObjectName, RA, DEC;
spaceObjectName = txtSpaceObject.Text;
RA = txtRA.Text;
DEC = txtDec.Text;
adsJarvis.InsertParameters["spaceObjectName"].DefaultValue = txtSpaceObject.Text;
adsJarvis.InsertParameters["RA"].DefaultValue = RA;
adsJarvis.InsertParameters["DEC"].DefaultValue = DEC;
try
{
adsJarvis.Insert();
txtSpaceObject.Text = "";
txtRA.Text = "";
txtDec.Text = "";
}
catch(Exception ex)
{
lblStatus.Text = "A database error has occurred. Message: " + ex.Message;
}
我的问题出现在这条线上:
adsJarvis.InsertParameters["spaceObjectName"].DefaultValue = txtSpaceObject.Text;
不管出于什么原因,我得到了这个:
System.NullReferenceException:对象引用未设置为对象的实例。
我一辈子都搞不清楚为什么,因为我已经检查过了,而且我知道spaceObjectName不是null。有人能告诉我哪里出了问题吗?任何提示都将不胜感激!提前感谢!
在您的代码段中,adsJarvis.InsertParameters["spaceObjectName"]
当然是null,因为编译器正在寻找名为spaceObjectName
的参数,这就是它抛出NullReferenceException的原因。你需要在aspx页面中引用它。
试试这个:
<asp:AccessDataSource ID="adsJarvis" runat="server" DataFile="~/App_Code/adbJarvisStars.accdb"
SelectCommand="SELECT * FROM [spaceObjectTable]"
InsertCommand="INSERT INTO spaceObjectTable( spaceObjectName, RA, DEC) VALUES (?, ?, ?)">
<InsertParameters>
<asp:Parameter Name="spaceObjectName" Type="string" />
<asp:Parameter Name="RA" Type="string" />
<asp:Parameter Name="DEC" Type="string" />
</InsertParameters>
</asp:AccessDataSource>
所以在你身后的代码中可以:
adsJarvis.InsertParameters["spaceObjectName"].DefaultValue = ...;
....