我试图在C#中查询来自SQLite的一些数据,虽然没有返回[并且它应该返回此表中的数据]
这是我尝试连接到SQLite并执行查询的代码中的部分。正如我所提到的,没有数据返回我也试过INSERT,没有添加任何条目。
SetConnection();
sql_con.Open();
myQuery = "Select * from myTable WHERE myColumn LIKE '" + myName+ "%';";
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = myQuery;
rw_maxid = (long)sql_cmd.ExecuteScalar();
sql_con.Close();
这段代码有什么问题?任何建议/文件/更正?
答案 0 :(得分:0)
你是如何调试的?
标量查询仅返回第一行的第一列
这假设您想要获得最大值的列是名为id并且是长
try
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
myQuery = "Select max(id) from myTable;";
Debug.WriteLine(myQuery);
sql_cmd.CommandText = myQuery;
rw_maxid = (long)sql_cmd.ExecuteScalar();
myQuery = "Select max(id) from myTable WHERE myColumn LIKE '" + myName+ "%';";
Debug.WriteLine(myQuery);
sql_cmd.CommandText = myQuery;
rw_maxid = (long)sql_cmd.ExecuteScalar();
}
catch (Exception Ex)
{
Debug.WriteLine(Ex.message);
}
finally
{
sql_con.Close();
}
答案 1 :(得分:0)
从sqlite数据库中选择数据:
public DataTable GetValueFromDatabase(string query)
{
const string connectionString = "Data Source=DatabaseName;Version=3;";
using(var ds = new DataSet())
{
using(var da = new SQLiteDataAdapter(query, connectionString))
{
using(var tran = new TransactionScope())
{
ds.Clear();
da.Fill(ds);
DataTable dt = ds.Tables[0];
tran.Complete();
return dt;
}
}
}
}
上面的方法返回一个DataTable,您可以从中获取值。 但是,这个解决方案不能解决sql注入问题!
调用函数:
var dt = GetValueFromDatabase("Select * from myTable WHERE myColumn LIKE '" + myName+ "%';");