我是SQLite的新手,我正在尝试从SQLite数据库文件中读取最后一行并且大量失败。
我可以成功建立连接并获取行,但我不知道如何从行中获取数据。
我有一张名为“我的”的表,如:
****************************************
id | name | age | time | task
0 | tommy| 23 | [time]| went to shops
****************************************
我正在尝试从任务列的最后一行获取数据,该列的类型为String。
可是:
以下是我的内容,主要来自我在网上找到的教程(我还没有找到):
namespace MyApp
{
public partial class Form1 : Form
{
private SQLiteConnection sql_con;
private SQLiteCommand sql_cmd;
private SQLiteDataAdapter DB;
private DataSet DS = new DataSet();
private DataTable DT = new DataTable();
public Form1()
{
InitializeComponent();
}
private void SetConnection()
{
string databasePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\MyApp\database.db";
sql_con = new SQLiteConnection
("Data Source=" + databasePath + ";Version=3;");
}
private void ExecuteQuery(string txtQuery)
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery();
sql_con.Close();
}
private void LoadData()
{
bool gotRow = false;
try
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
string CommandText = "select task from Mine";
DB = new SQLiteDataAdapter(CommandText, sql_con);
DS.Reset();
DB.Fill(DS);
DT = DS.Tables[0];
foreach (DataRow row in DT.Rows)
{
gotRow = true;
}
if (gotRow)
{
MessageBox.Show(row.ToString());
gotRow = false;
}
sql_con.Close();
}
catch(Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
LoadData();
}
}
}
我做错了什么?如何从最后一行获取数据?
答案 0 :(得分:3)
更改您的查询以选择按task
降序排序的最后id
:
select task
from Mine
order by id desc
limit 1
然后在你的方法中应该看起来像这样::
private void LoadData()
{
try
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
string commandText = "select task from Mine order by id desc limit 1";
sql_cmd.CommandText = commandText;
var lsattask = sql_cmd.ExecuteScalar().ToString();
MessageBox.Show(lsattask);
sql_con.Close();
}
catch(Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
ExecuteScalar
返回第一列第一行的结果,因为我们按id
排序数据,第一行是最后一行插入的。