none
sqlite数据插入 RRS feed

  • 问题

  • 向sqlite数据库中插入数据,执行代码过程没有报错也没有出现异常,然后打开数据库发现数据没有插入成功。

    代码如下:

     //数据库操作
                string sql = "insert into loc([To],Subject,Content,[From],Datetime) VALUES ('fgfd','ds','ds','ds','sd')";
                SqliteHelper.UpdateData(sql ,false);
    //SqliteHelper类
     public partial class SqliteHelper
        {
            public static string ConnString=@"Data Source="+"db\\local.db";
            public static DataTable GetDataTable(string sSQL)
            {
                DataTable dt = null;
                try
                {
                    SQLiteConnection conn = new SQLiteConnection(ConnString);
                    conn.Open();
                    SQLiteCommand cmd = new SQLiteCommand();
                    cmd.CommandText = sSQL;
                    cmd.Connection = conn;
                    SQLiteDataAdapter dao = new SQLiteDataAdapter(cmd);
                    dt = new DataTable();
                    dao.Fill(dt);
                }
                catch
                {
                }
                return dt;
            }
    
            // 执行insert,update,delete 动作,也可以使用事务
            public static bool UpdateData(string sSQL, bool bUseTransaction)
            {
                int iResult = 0;
                if (!bUseTransaction)
                {
                    try
                    {
                        SQLiteConnection conn = new SQLiteConnection(ConnString);
                        conn.Open();
                        SQLiteCommand comm = new SQLiteCommand(conn);
                        comm.CommandText = sSQL;
                        iResult = comm.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch
                    {
                        iResult = -1;
                    }
                }
                else // 使用事务
                {
                    DbTransaction trans = null;
                    try
                    {
                        SQLiteConnection conn = new SQLiteConnection(ConnString);
                        conn.Open();
                        trans = conn.BeginTransaction();
                        SQLiteCommand comm = new SQLiteCommand(conn);
                        comm.CommandText = sSQL;
                        iResult = comm.ExecuteNonQuery();
                        trans.Commit();
                    }
                    catch
                    {
                        iResult = -1;
                        trans.Rollback();
                    }
                }
                return iResult > 0;
            }
        }

    2015年1月3日 11:57

答案

  • 你好:

    有没有单步调试看看,有可能抛出异常了,但是被UpdateData方法捕获了,你可以监视一下UpdateData方法的返回值就知道了。有可能是Open()方法出错了,也有可能是ExecuteNonQuery方法报错了,查看一下具体的报错信息。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 TX2012LH 2015年1月5日 2:11
    2015年1月5日 1:52
    版主

全部回复

  • 你好:

    有没有单步调试看看,有可能抛出异常了,但是被UpdateData方法捕获了,你可以监视一下UpdateData方法的返回值就知道了。有可能是Open()方法出错了,也有可能是ExecuteNonQuery方法报错了,查看一下具体的报错信息。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 TX2012LH 2015年1月5日 2:11
    2015年1月5日 1:52
    版主
  • 谢谢,已经解决了,是数据库连接字符串出问题了,造成open()失败。
    2015年1月5日 2:10