在C#中对SQLite执行查询

时间:2014-04-18 12:47:01

标签: c# .net visual-studio-2010 sqlite

我试图在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();

这段代码有什么问题?任何建议/文件/更正?

2 个答案:

答案 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+ "%';");