C# Sqlite抛出NullReferenceException
从这段代码中抛出一个空异常,我不明白为什么会这样。引发NullReferenceException的行是C# Sqlite抛出NullReferenceException,c#,android,sql,android-asynctask,sqlite,C#,Android,Sql,Android Asynctask,Sqlite,从这段代码中抛出一个空异常,我不明白为什么会这样。引发NullReferenceException的行是 if (await dbConn.FindAsync<ShoppingList>(x => x.Name == insertedList.Name) != null) if(等待dbConn.FindAsync(x=>x.Name==insertedList.Name)!=null) 以下是整个方法: public async Task<string> Sa
if (await dbConn.FindAsync<ShoppingList>(x => x.Name == insertedList.Name) != null)
if(等待dbConn.FindAsync(x=>x.Name==insertedList.Name)!=null)
以下是整个方法:
public async Task<string> SaveSingleShoppingList(IShoppingList shoppingList)
{
try
{
var dbConn = new SQLiteAsyncConnection(dbPath);
ShoppingList insertedList = (ShoppingList)shoppingList;
await SaveGroceries(shoppingList.Groceries, shoppingList.Name, dbConn);
if(await dbConn.FindAsync<ShoppingList>(x => x.Name == insertedList.Name) != null)
await dbConn.UpdateAsync(insertedList);
else
await dbConn.InsertAsync(insertedList);
return "Shopping list Saved!";
}
catch (SQLiteException ex)
{
return ex.Message;
}
catch(NullReferenceException nre)
{
return nre.Message;
}
}
公共异步任务SaveSingleShoppingList(IShoppingList shoppingList)
{
尝试
{
var dbConn=新的SQLiteAsyncConnection(dbPath);
ShoppingList insertedList=(ShoppingList)ShoppingList;
等待保存杂货(shoppingList.Groceries,shoppingList.Name,dbConn);
if(等待dbConn.FindAsync(x=>x.Name==insertedList.Name)!=null)
等待dbConn.updateSync(插入列表);
其他的
等待dbConn.InsertAsync(insertedList);
返回“已保存购物清单!”;
}
catch(SQLiteException-ex)
{
返回ex.消息;
}
捕获(NullReferenceException nre)
{
返回nre.消息;
}
}
下面是异常消息的完整范围
{System.NullReferenceException:对象引用未设置为
位于的对象的实例
SQLite.TableQuery1[ShoppingAssistant.ShoppingList].CompileExpr
(System.Linq.Expressions.Expression,
System.Collections.Generic.List
1 queryArgs)[0x00000]in:0
在SQLite.TableQuery1[ShoppingAssistant.ShoppingList].CompileExpr
(System.Linq.Expressions.Expression,
System.Collections.Generic.List
1 queryArgs)[0x00000]in:0
在
SQLite.TableQuery1[ShoppingAssistant.ShoppingList].GenerateCommand
(System.String selectionList)[0x00000]位于:0处
SQLite.TableQuery
1[ShoppingAssistant.ShoppingList].GetEnumerator()
[0x00000]英寸:0
在
System.Collections.Generic.List1[ShoppingAssistant.ShoppingList].AddEnumerable
(IEnumerable
1可枚举)[0x00000]输入:0
在
System.Collections.Generic.List1[ShoppingAssistant.ShoppingList]…ctor
(IEnumerable
1集合)[0x00000]位于:0
在System.Linq.Enumerable.ToList[ShoppingList](IEnumerable`1)中
0中的源)[0x00000]
在
SQLite.TableQuery`1[ShoppingAssistant.ShoppingList].FirstOrDefault()
[0x00000]英寸:0
在SQLite.SQLiteConnection.Find[ShoppingList]
中的(System.Linq.Expressions.Expression`1谓词)[0x00000]
:0
在
SQLite.SQLiteAsyncConnection+c__AnonStorey7`1[ShoppingAssistant.ShoppingList].m_u0
()[0x00000]英寸:0
在
System.Threading.Tasks.TaskActionInvoker+FuncInvoke`1[ShoppingAssistant.ShoppingList].Invoke
(System.Threading.Tasks.Task所有者,System.Object状态,
0中的System.Threading.Tasks.Task上下文)[0x00000]
位于System.Threading.Tasks.Task.InnerInvoke()[0x00000]中:0位于System.Threading.Tasks.Task.ThreadStart()[0x00000]
年:0
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
[0x00000]英寸:0英寸
System.Runtime.CompilerServices.TaskWaiter`1[ShoppingAssistant.ShoppingList].GetResult
()[0x00000]英寸:0英寸
ShoppingAssistant.SQLiteDataAcces+d_u2d.MoveNext
()[0x0009d]英寸
c:\Users\kaj\Desktop\dbTest\dbTest\SQLiteDataAcces.cs:187
}System.NullReferenceException
您是否考虑过对象引用为
null
的可能性?它的可能重复项已修复,结果是sqlite希望插入到db中的对象不在非空构造函数中实例化,因为我发现字符串名称设置在那里,所以在运行代码时为null,谢谢你的建议。我怎么投票给你们?