SQLite和删除命令

时间:2012-07-07 11:53:32

标签: c# sqlite

        bool ret = false;
        try
        {
            SQLiteConnection sqlConn = new SQLiteConnection("Data Source=" + m_dbName);
            sqlConn.Open();
            SQLiteCommand sqlComm = sqlConn.CreateCommand();
            sqlComm.CommandText = "DELETE FROM " + szTablename+" WHERE name="+name+"";            

            SQLiteDataAdapter sqlAdapter = new SQLiteDataAdapter(sqlComm);

            if (null == sqlAdapter)
            {
                ret = false;
            }
            else
            {
                ret = true;
            }
            sqlConn.Close();
            return ret;
        }
        catch (SQLiteException sqlEx)
        {
            Console.WriteLine(sqlEx.Message);
            return false ;
        }

我有一个代码来删除sqlite数据库中的一行,但是在单击“删除”按钮后没有任何操作。

4 个答案:

答案 0 :(得分:2)

您可以直接执行命令,而不是使用DataAdapter

using(SQLiteConnection sqlConn = new SQLiteConnection("Data Source=" + m_dbName))
{
    sqlConn.Open();
    //create command

    sqlCommand.ExecuteNonQuery();
}

您不应该吞下从ExecuteNonQuery方法抛出的任何异常,除非您能够明智地处理它们。您应该使用参数化查询,而不是通过连接字符串手动创建查询。您还应确保在完成使用后关闭连接,如图所示。

答案 1 :(得分:0)

尝试使用单引号:

sqlComm.CommandText = "DELETE FROM " + szTablename+" WHERE name='"+name+"'";

答案 2 :(得分:0)

您是否尝试过使用like而不是= 在查询中:

sqlComm.CommandText = "DELETE FROM " + szTablename+" WHERE name="+name+""

是这样的:

sqlComm.CommandText = "DELETE FROM " + szTablename+" WHERE name like "+name+""

答案 3 :(得分:0)

using (SQLiteCommand com = new SQLiteCommand(con))
                {
                    com.CommandText = "DELETE FROM " + szTablename + " WHERE name='" + name + "';";
                    com.ExecuteNonQuery();
                    com.Dispose();
                }