我正在使用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。 谁能告诉我哪里出错了?任何提示将不胜感激!提前谢谢!
答案 0 :(得分:0)
在你的代码片段中,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 = ...;
....