在尝试追踪仅在某些情况下发生的空引用异常的原因时,我遇到了以下代码:
SqlCeDataReader IdValsReader = IdValsCMD.ExecuteReader();
if ((IdValsReader.Read()) && (!IdValsReader.IsDBNull(0)))
{
return string.Format("{0};{1};{2};{3};{4};{5};{6};{7};",
IdValsReader.GetValue(DESCRIPTION_INDEX),
. . .
}
IdValsReader.Close();
Run Code Online (Sandbox Code Playgroud)
...并且想知道我是否应该在IdValsReader.Close()之后添加这一行:
IdValsReader.Dispose();
Run Code Online (Sandbox Code Playgroud)
我这样做了,但似乎没有任何区别; 我应该把它留下来还是把它剥掉?
我在Wigley和Wheelwright的"Microsoft .NET Compact Framework"中修改了下面的代码:
SqlCeConnection cn = new SqlCeConnection(@"Data Source=\My Documents\Traffic.sdf");
String sSQL= "SELECT CarID, Reg, Location FROM Cars");
SqlCeCommand cmdSelect = new SqlCeCommand(sSQL, cn);
cmdSelect.CommandType = CommandType.Text;
SqlCeDataReader dtr = cmdSelect.ExecuteReader(CommandBehavior.Default); // It's "cmd." instead of "cmdSelect." in the book, but that doesn't compile
while (dtr.Read())
{
ListViewItem item = new ListViewItem(dtr.GetInt32(0).ToString());
item.SubItems.Add(dtr.GetString(1));
item.SubItems.Add(dtr.GetString(2));
listViewCars.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
...所以我的代码是这样的:
private String getDataAsXMLFromTable(String tableName, String siteNum)
{
String strXML;
StringBuilder sbXML = new StringBuilder();
String lineId;
String refNum;
String upcCode;
String desc; …Run Code Online (Sandbox Code Playgroud) compact-framework executereader windows-ce sql-server-ce sqlcedatareader