存储过程调用,一个奇怪的情况i';我面对面

本文关键字:情况 面对面 调用 一个 存储过程 | 更新日期: 2023-09-27 18:25:34

使用Visual Studio 2008,C#

在过去的两天里,我遇到了一个问题,所以我想在这里问一下。我的数据库中有一个名为StoredProcedure1:的存储过程

ALTER PROCEDURE dbo.StoredProcedure1
   @ID int,
   @Username varchar(10),
   @Pass varchar(10),
   @Status varchar(10)
AS
   INSERT INTO tPasswords(ID, fUsername, fPassword, fStatus)
   Values (@ID, @Username, @Pass, @Status)
   RETURN 

我只是在我的桌子上加了一行。

当我从visualstudio中的服务器资源管理器执行该过程时,一切都会顺利运行,当我看到数据库中的数据时,我会看到刚刚添加的新行。

问题是当我试图在程序中运行该过程时。

因此,为了在一个空表单中进行测试,我创建了一个按钮和:

using System.Data.Sql;
using System.Data.SqlClient;
private void button1_Click(object sender, EventArgs e)
{
    string a = "Andreas"; 
    string b = "Andreas2"; 
    string c = "Andreas3"; 
    int _id = 10;
     SqlConnection connection = new SqlConnection(
        Properties.Settings.Default.dPasswordsConnectionString);
    SqlCommand cmd = new SqlCommand(
        "StoredProcedure1", connection);
    connection.Open();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandTimeout = 600;
    cmd.Parameters.Add("@ID", _id);
    cmd.Parameters.Add("@Username", a);
    cmd.Parameters.Add("@Pass", b);
    cmd.Parameters.Add("@Status", c);
    int i = cmd.ExecuteNonQuery();
    connection.Close();
}

当我按下这个按钮时,我没有任何错误或任何东西,当我按下两次时,它会导致相同主键的错误,所以这个过程正在进行。

但当我转到数据库时,我没有看到新数据被插入。

事实上,这就是我的问题,我无法从程序中写入数据库。

存储过程调用,一个奇怪的情况i';我面对面

我猜您正试图在存储过程中设置主键。

您应该让SQL为您设置它。

我猜@ID是你的主要钥匙。。。删除该代码,以及将值插入行的proc中的代码。

您应该确保您的列定义设置为自动为您生成这些。