我写了一个程序,其中包括从数据库中编写和读取。当我运行应用程序并尝试执行写入时,我调用以下方法:

public static void AddMessage(string callID, string content)
    {
        string select =
            "INSERT INTO Sporocilo (oznaka_klica, smer, vsebina, prebrano, cas_zapisa) VALUES (@callId, 0, @content, 0, @insertTime)";
        SqlCommand cmd = new SqlCommand(select, conn);
        cmd.Parameters.AddWithValue("callId", callID.ToString());
        cmd.Parameters.AddWithValue("content", content);
        cmd.Parameters.AddWithValue("insertTime", "10.10.2008");
        try
        {
            conn.Open();
            cmd.ExecuteScalar();
        }
        catch(Exception ex)
        {
            string sDummy = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
    }

在方法调用之后,我从表中读取所有记录并在表单中显示它们。可以看到在刷新之前插入的记录,但是当我退出应用程序并查看表格时,我看不到记录。

有谁知道会导致这种行为的原因是什么?

有帮助吗?

解决方案

此后您是否正在执行提交?它可能正在运行您的语句,但之后不提交更改并执行隐式回滚。

我认为异常处理看起来很狡猾。除非你能以某种方式实际处理它,否则没有必要捕获一些东西。框架的顶层是捕获和报告意外异常的地方。

其他提示

您是否尝试将ExecuteScalar方法的返回值设置为int,然后根据表格检查值?

ExecuteScalar -

执行查询,并返回查询返回的结果集中第一行的第一列。忽略其他列或行

public static int AddMessage(string callID, string content)
    {
        Int32 newProdID = 0
        string select =
            "INSERT INTO Sporocilo (oznaka_klica, smer, vsebina, prebrano, cas_zapisa) VALUES (@callId, 0, @content, 0, @insertTime); SELECT CAST(scope_identity() AS int);";
        SqlCommand cmd = new SqlCommand(select, conn);
        cmd.Parameters.AddWithValue("callId", callID.ToString());
        cmd.Parameters.AddWithValue("content", content);
        cmd.Parameters.AddWithValue("insertTime", "10.10.2008");
        try
        {
            conn.Open();
            newProdID = (Int32)cmd.ExecuteScalar();
        }
        catch(Exception ex)
        {
            string sDummy = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return (int)newProdID
    }

我发现了问题。我修改了自动生成的连接字符串

  

的connectionString = QUOT;数据   源= \ SQLEXPRESS; AttachDbFilename = | DataDirectory目录| \ URSZRDB.mdf;集成   Security = True; User Instance = True"

  

的connectionString = QUOT;数据   源= \ SQLEXPRESS; AttachDbFilename = C:\用户\尼科\文档\ Visual   Studio 2008 \ Projects \ URSZRWAPChat \ URSZRWAPChat \ URSZRDB.mdf;集成   Security = True; User Instance = True"

现在它有效。

这不是我第一次写这种程序,到目前为止一切都很顺利......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top