首页 > 解决方案 > 尝试通过存储过程插入值

问题描述

我正在尝试通过存储过程插入值,但是一切似乎都运行成功,但数据没有插入数据库。

这是表设置:

CREATE TABLE [dbo].[Owner] 
(
    [ClientID]     INT           IDENTITY (101, 1) NOT NULL,
    [Title]        NCHAR (10)    NULL,
    [Forename]     NVARCHAR (50) NULL,
    [Surname]      NVARCHAR (50) NULL,
    [Address1]     NVARCHAR (50) NULL,
    [EmailAddress] NVARCHAR (50) NULL,
    [TelephoneNo]  NVARCHAR (50) NULL,
    [DateOfBirth]  NVARCHAR (50) NULL,

    PRIMARY KEY CLUSTERED ([ClientID] ASC)
)

这是存储过程:

CREATE PROCEDURE [dbo].AddOwner
    @Title nvarchar(50),
    @Forename nvarchar(50),
    @Surname nvarchar(50),
    @Address1 nvarchar(50),
    @EmailAddress nvarchar(50),
    @TelephoneNo nvarchar(50),
    @DateOfBirth nvarchar(50)
AS
    INSERT INTO Owner(Title, Forename, Surname, Address1, EmailAddress, TelephoneNo, DateOfBirth)
    VALUES (@Title, @Forename, @Surname, @Address1, @EmailAddress, @TelephoneNo, @DateOfBirth)

    RETURN 0

这是ProjectDal:

public static int AddOwner(string Title, string Forename, string Surname,string EmailAddress, string TelephoneNo, string DateOfBirth, string Address1)
{
    using (SqlConnection connection = new SqlConnection(_connectionstring))
    {
        connection.Open();

        SqlCommand insertClientCommand = new SqlCommand();
        insertClientCommand.Connection = connection;
        insertClientCommand.CommandType = System.Data.CommandType.StoredProcedure;
        insertClientCommand.CommandText = "AddOwner";

        insertClientCommand.Parameters.Add(new SqlParameter("@Title", Title));
        insertClientCommand.Parameters.Add(new SqlParameter("@Forename", Forename));
        insertClientCommand.Parameters.Add(new SqlParameter("@Surname", Surname));
        insertClientCommand.Parameters.Add(new SqlParameter("@Address1", Address1));
        insertClientCommand.Parameters.Add(new SqlParameter("@EmailAddress", EmailAddress));
        insertClientCommand.Parameters.Add(new SqlParameter("@TelephoneNo", TelephoneNo));
        insertClientCommand.Parameters.Add(new SqlParameter("@DateOfBirth", DateOfBirth));

        // insertClientCommand.Parameters.Add(new SqlParameter("@Address2", Address2));
        // insertClientCommand.Parameters.Add(new SqlParameter("@PostCode", PostCode));
        int rowsAffected = insertClientCommand.ExecuteNonQuery();

        connection.Close();

        return rowsAffected;
    }
}

帮助将不胜感激。谢谢

标签: c#sqlsql-serverdatabasestored-procedures

解决方案


有几件事需要检查:

  • 如果 _connection 字符串中指定了正确的数据库
  • 如果标题列没有截断:表中的字段长度为 10 个字符,而 SP 中的字段长度为 50 个字符
  • 你会得到什么 RowsAffected

推荐阅读