0

クエリを実行するまでしばらくの間、クエリを機能させようとしましたが、何も挿入されず、エラーも返されません。

データベース接続が開いており、正常に接続されています。

このテーブルはエラーログと呼ばれ、次のデータを保持します

- id (int autoincremental, Primary key, Unique)
- exception (varchar)
- time (DateTime)

exception = String(error message)
time = DateTime.Now

コードは次のとおりです。

 public void insertError(string error, DateTime time)
    {
        SqlCeParameter[] sqlParams = new SqlCeParameter[]  
        {  
           new SqlCeParameter("@exception", error), 
           new SqlCeParameter("@time", time)
        };

        try
        {
            cmd = new SqlCeCommand();
            cmd.Connection = connection;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO errorlog (exception, time) VALUES(@exception, @time)";
            cmd.Parameters.AddRange(sqlParams);
            cmd.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

助けていただければ幸いです、よろしくお願いします。

編集 @exceptionの周りの引用符を削除しました

ここに接続があります:

protected DataController()
    {
        try
        {
            string appPath = System.IO.Path.GetDirectoryName(Assembly.GetAssembly(typeof(DataController)).CodeBase).Replace(@"file:\", "") + @"\";
            string strCon = @"Data Source = " + appPath + @"Data\EasyShop.sdf";
            connection = new SqlCeConnection(strCon);
        }
        catch (Exception e)
        {

        }

        connection.Open();
    }

最後にそれが呼ばれる方法:

public bool log(string msg, bool timestamp = true)
    {
        DataController dc = DataController.Instance();
        dc.insertError(msg, DateTime.Today);

        return true;
    }
4

1 に答える 1

1
  1. アプリケーションをデバッグし、必要connectionなデータベースを正確に指しているかどうかを確認します。また、同じデータベースで挿入されたレコードを探すかどうかも確認してください。
  2. あなたconnectionがトランザクションに属している場合は、それがコミットされているかどうかを確認してください。トランザクションがコミットされるまで、挿入されたレコードは表示されません。
  3. あなたINSERTが間違っているように私には思えます。前後の引用符を削除@exception
  4. SQL Server プロファイラーを開き、データベースに接続してINSERT、そこに表示されるかどうかを確認します。
于 2012-12-15T19:54:28.347 に答える