2012-02-24 4 views
1

с помощью 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 

Я просто добавить строку в моей таблице.

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

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

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

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

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

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

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

+0

Какая строка подключения? Похоже, вы находитесь в транзакции, которая не была завершена. – btlog

+0

Источник данных =. \ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ dPasswords.mdf; Интегрированная безопасность = True; Пользовательский экземпляр = True " –

+0

Пожалуйста, не префиксные заголовки с" C# "и т. Д. Это то, что теги для –

ответ

1

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

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

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

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

+0

Действительно, @ID - мой первичный ключ, я исправлен эта проблема сейчас, но главная проблема, о которой я описал выше, заключается в том, что я не могу добавить какие-либо данные из своей базы данных из своего приложения. –

+0

Когда я запускаю StoreProcedure из проводника сервера, он правильно добавляет datam, но из моей программы нет. –

+0

Просто обновите таблицу и проверьте, вставлены ли данные. Я говорю это, потому что даже я сначала изрывал голову. Беспокойство, что данные не вставлены, даже когда это было на самом деле. Исправить проблему с первичным ключом, как предположил Muad'Dib. –

Смежные вопросы