我试图从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运行时没有错误,我可以看到正在创建的记录。
答案 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";