从命令中删除不在sqlite中工作?

时间:2016-05-19 17:55:40

标签: sqlite

我有一个sqlite db文件。我使用DB Browser for Sqlite作为客户端。我进去并在大多数桌面上从命令运行删除。此后我尝试使用Database to SQL file选项导出我注意到我的所有数据都出现在其中。我想知道为什么数据没有被删除?我知道sqlite文件大小不会缩小。

以下是我的代码片段。

string str = @"Data Source=" + userFilePath + "\\mysqlite.sqlite3";
                    using (SQLiteConnection con = new SQLiteConnection(str))
                    {
                        con.Open();
                        SQLiteTransaction trans = con.BeginTransaction();
                        try
                        {


                            String cmdSelect1 = "Select * from table1 where companyID='" + companyID + "' And month='" + month + "' And year='" + year + "'";
                            int fiscalPeriod = Convert.ToInt32(monthNumber);
                            int financialYear = Convert.ToInt32(itemvalueyear);
                            using (SQLiteCommand cmd1 = new SQLiteCommand(cmdSelect1, con, trans))
                            {
                                SQLiteDataReader dr1 = cmd1.ExecuteReader();

                                if (dr1.Read())
                                {

                                    MessageBoxResult messageBoxResult = System.Windows.MessageBox.Show("Records Already Exist ? Are you confirm replace it?", "Delete Confirmation", System.Windows.MessageBoxButton.YesNo);
                                    if (messageBoxResult == MessageBoxResult.Yes)
                                    {

                                        String deleteTable = "Delete from table1 where companyID='" + companyID + "' And month='" + month + "' And year='" + year + "'";
                                        using (SQLiteCommand cmdDeleteTb1 = new SQLiteCommand(deleteTable, con, trans))
                                        {
                                            cmdDeleteTb1.ExecuteNonQuery();
                                            cmdDeleteTb1.Dispose();
                                        }
                                        foreach (object line in linesC)
                                        {
                                            if (line.GetType() == typeof(TypeC))
                                            {

                                                String cmdText2 = "INSERT INTO table1(tbID,companyID,month,year) VALUES(@tbID,@companyID,@month,@year)";
                                                using (SQLiteCommand cmd = new SQLiteCommand(cmdText2, con, trans))
                                                {

                                                    cmd.Parameters.AddWithValue("@tbID", tbID);
                                                    cmd.Parameters.AddWithValue("@companyID", companyID);
                                                    cmd.Parameters.AddWithValue("@month", month);
                                                    cmd.Parameters.AddWithValue("@year", year);
                                                    cmd.ExecuteNonQuery();
                                                    cmd.Parameters.Clear();
                                                    cmd.Dispose();
                                                }
                                            }
                                        }

                                    }
                                }


                                dr1.Close();
                                cmd1.Dispose();
                            }
                            trans.Commit();

                            MessageBox.Show("Successfully Inserted Into Database");
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Rollback " + ex.ToString());
                            trans.Rollback();
                        }

                        con.Close();
                        con.Dispose();



                        GC.Collect();

1 个答案:

答案 0 :(得分:1)

确定:

看来你正在开始两笔交易。在开始删除后开始循环插入。

提交您的删除事务,然后提交您的插入。

这不是在开始两笔交易后提交的。