试图从C#窗体调用存储过程,但没有任何反应

时间:2015-04-07 20:50:09

标签: c# winforms stored-procedures

我试图从C#windows Form应用程序调用存储过程。它被执行但数据库中没有任何内容,即没有记录添加到表中。 这是我的C#代码:

private void buttonAddData_Click(object sender, EventArgs e)
{
    string actionTaken = "Added";
    string changeDescription = "Added new Code";
    string updatedBy = "ICherry";
    string currentStatus = "In development";
    SqlConnection conDatabase = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\ConfigData.mdf;Integrated Security=True;");
    try
    {
        SqlCommand cmd = conDatabase.CreateCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "spLogConfigChanges";                
        cmd.Parameters.AddWithValue("@ActionTaken",actionTaken);
        cmd.Parameters.AddWithValue("@ChangeDescription", changeDescription);
        cmd.Parameters.AddWithValue("@UpdatedBy", updatedBy);
        cmd.Parameters.AddWithValue("@CurrentStatus", currentStatus);
        conDatabase.Open();
        MessageBox.Show("Connection opened");
        cmd.ExecuteNonQuery();
        MessageBox.Show("Command Executed");
        conDatabase.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}    

在查询分析器中执行时,我的SP运行时没有错误,我可以看到正在创建的记录。

2 个答案:

答案 0 :(得分:1)

而不是使用

        SqlCommand cmd = conDatabase.CreateCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "spLogConfigChanges";                
        cmd.Parameters.AddWithValue("@ActionTaken",actionTaken);
        cmd.Parameters.AddWithValue("@ChangeDescription", changeDescription);
        cmd.Parameters.AddWithValue("@UpdatedBy", updatedBy);
        cmd.Parameters.AddWithValue("@CurrentStatus", currentStatus);
        conDatabase.Open();
        MessageBox.Show("Connection opened");
        cmd.ExecuteNonQuery();
        MessageBox.Show("Command Executed");
        conDatabase.Close();

试试这个:

conDatabase.Open();
    SqlCommand cmd = new SqlCommand("spLogConfigChanges",conDatabase);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ActionTaken",SqlDbType.Varchar).Value = actionTaken;
cmd.Parameters.Add("@ChangeDescription",SqlDbType.VarChar).Value = changeDescription;
cmd.Parameters.Add("@UpdateBy",SqlDbType.VarChar).Value = updatedBy;
cmd.Parameters.Add("@CurrentStatus",SqlDbType.VarChar).Value=currentStatus);

cmd.ExecuteNonQuery();
MessageBox.Show("Command Executed");
conDatabase.Close();

如果您遇到一些错误,请发表评论

答案 1 :(得分:0)

我在使用 stored procedure 时遇到了同样的问题,我解决了

改变这个

cmd.Parameters.AddWithValue("@param", "String Value")

至此

cmd.Parameters.Add("@param", OleDbType.VarChar).Value = "String Value";