c# - 我有 3 行的 SQLite db,当我从行中删除数据时,数据会丢失但行仍然会丢失,我怎样才能删除那个空白行?
问题描述
我有 xamarin 应用程序,我正在使用 SQLite 保存数据,如果我有 3 行并删除第二行,那么数据将被删除但行将是空白的,它仍然在这里,问题是,我需要从每一行加载一列. 我正在使用循环和计数来为其设置最大值。但是计数说我有两行,所以循环加载只是第一行而不是第二行,因为第二行在第三行,第二行是空白的。我需要删除空白行或发现如何加载它的另一种解决方案。如何删除空白数据库?计数算法:
public int GetNumberPhotos()
{
var db = new SQLiteConnection(_dbPath);
db.CreateTable<Airplane>();
int count = 0;
if (db.Table<Airplane>().FirstOrDefault(l => l.Id == 1) != null)
count = db.Table<Airplane>().Count();
return count;
}
加载:
public int BetterUniReg()
{
int numberPhotos = GetNumberPhotos();
string[] allReg = new string[numberPhotos];
string[] uniReg = new string[numberPhotos];
int uniRegCnt = 0;
var db = new SQLiteConnection(_dbPath);
//db fill
for (int i = 0; i <= numberPhotos; i++)
{
if (db.Table<Airplane>().FirstOrDefault(b => b.Id == i) != null)
{
var rowData = db.Table<Airplane>().FirstOrDefault(c => c.Id == i);
i--;
allReg[i] = rowData.Registration;
i++;
}
}
这是删除代码:
private async void deleteButton_Clicked(object sender, EventArgs e)
{
var action = await DisplayAlert("Delete", "Do you want delete picture?", "Cancel", "Delete");
if (action)
{
}
else
{
var butto = sender as Button;
var frame = butto.Parent.Parent.Parent.Parent as Frame;
await frame.FadeTo(0, 600);
var button = (Button)sender;
var plane = (Airplane)button.BindingContext;
var db = new SQLiteConnection(_dbPath);
db.Delete<Airplane>(plane.Id);
Refresh();
}
}
解决方案
我已经通过添加如果它的最后一行和它的 null 然后再做一个循环来完成绕行。这是代码:
for (int i = 1; i <= numberPhotos; i++)
{
if (db.Table<Airplane>().FirstOrDefault(c => c.Id == i) != null)
{
var rowData = db.Table<Airplane>().FirstOrDefault(c => c.Id == i);
allReg[regnumber] = rowData.Registration;
regnumber++;
}
if (db.Table<Airplane>().FirstOrDefault(c => c.Id == i) == null && i == numberPhotos)
{
numberPhotos = numberPhotos + 1;
}
}
推荐阅读
- c# - 如何在 web.config 的部分属性中使用 appsettings 值
- java - 从云 Firestore 中的一个集合中获取所有文档?
- python - 如何在 Django 模型中添加变量
- ios - 哪个通知会触发 textViewDidChange?
- ruby-on-rails-4 - Rails NoMethodError:BigDecimal 的未定义新方法:Class
- mysql - 特定结果上 WHERE 子句的 SQL 提升约束
- r - 使用 R 根据条件获取特定字段和其旁边的单元格值
- reactjs - 使用 React Hooks 进行无限递归
- c - 扩展共享内存 C shmget
- android - 检测 Recyclerview 行是否与 FloatingActionButton 重叠