我有一个角色为sa的数据库。
当我执行将记录插入表的存储过程时。但是,当我通过ADO.NET代码运行相同的存储过程时,记录未成功插入。但是,我可以看到存储过程已被调用并成功运行到using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
using (SqlCommand command = conn.CreateCommand())
{
command.CommandText = "InsertData";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Id", Id);
command.Parameters.AddWithValue("@name", Name);
command.ExecuteNonQuery();
}
}
。
尝试添加交易并提交但仍然没有运气。
CREATE PROCEDURE [dbo].[InsertData]
@Id INT,
@name VARCHAR(50)
AS
SET NOCOUNT ON;
INSERT INTO Employee (Id, Name)
VALUES (@Id, @name)
GO
var ConnectionString = "Data Source=xxxx;Initial Catalog=xxxx;Persist Security Info=True;User Id=xxxx;Password=xxxxx;MultipleActiveResultSets=True";
存储过程:
new ObjectMapper().configure(
DeserializationFeature.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY,
false);
答案 0 :(得分:2)
在花了一天之后终于解决了......我正在使用遗留代码。非常出色的人使用C#代码打开了一个事务。我们有这些方法,你创建一个新的SQL连接字符串,插入数据,然后我们没有完成该事务 - 它没有插入记录..
解决这个问题的最佳方法是找到“交易”这个词,你可能会发现:
TransactionOptions options = new TransactionOptions();
options.IsolationLevel = IsolationLevel.ReadCommitted;
transaction = new TransactionScope(TransactionScopeOption.RequiresNew, options);
答案 1 :(得分:0)
您的代码看起来很好,您可以尝试这样做吗?
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
using (SqlCommand command = conn.CreateCommand())
{
string cmd = string.format("INSERT INTO PaymentDevices (Id, Name) VALUES ({0}, '{1}')",Id,Name);
command.CommandText = cmd;
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
}
这可以帮助您确定问题所在,如果它有效则问题是您的 SP调用本身,如果它不起作用问题出在您的连接字符串中或交易开启