Вызов хранимой процедуры, странная ситуация, с которой я сталкиваюсь - PullRequest
1 голос
/ 24 февраля 2012

Использование Visual Studio 2008, C #

В течение последних 2 дней я сталкивался с проблемой, поэтому я подумал, что могу спросить здесь.У меня есть эта хранимая процедура в моей базе данных с именем 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 

Я просто добавляю строку в свою таблицу.

Когда я выполняю процедуру из проводника сервера в Visual Studioвсе идет гладко, и когда я вижу данные в своей базе данных, я вижу новую строку, которую я только что добавил.

Проблема в том, что я пытаюсь запустить процедуру внутри моей программы.

Поэтому для проверки внутри пустой формы я создал кнопку и:

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();
}

Когда я нажимаю эту кнопку, у меня не возникает никаких ошибок или чего-либо еще, когда я нажимаю ее дважды, это вызывает ошибку о том же основномключ, поэтому процедура работает.

Но когда я захожу в свою базу данных, я не вижу, что новые данные были вставлены.

На самом деле это моя проблема, я не могу написать в свойбаза данных из моей программы.

1 Ответ

1 голос
/ 24 февраля 2012

Вы пытаетесь установить первичный ключ в вашей хранимой процедуре, я думаю.

вы должны позволить SQL установить его для вас.

Я предполагаю, что @ID - ваш первичный ключ ... удалите этот код и код из вашего процесса, где вы вставляете значение в строку.

Вы должны убедиться, что для определения столбца задано автоматическое их создание.

...