powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Передача параметров в ХП
3 сообщений из 3, страница 1 из 1
Передача параметров в ХП
    #37312519
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, чепуха какая-то получается, не знаю уж куда и копать.
Есть хранимка на MS SQL 2008, через веб-форму в неё передаются параметры. Запись вставляется, но все перепутано:
там, где должен быть пароль, там ФИО, там где логин - там пароль и т.д.
Прошерстил уже все, что можно.
Вот код, запускающий процедуру:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public int InsertUser(UserInfo usin)
    {
        using (SqlConnection userconn = new SqlConnection(ConnectionString))
        {
            using (SqlCommand usercomm = new SqlCommand("dbo.InsertUser")) 
            {
                usercomm.CommandType = CommandType.StoredProcedure;
                SqlParameter parID = new SqlParameter("@UserID", SqlDbType.Int,  4 );
                parID.Direction = ParameterDirection.Output;
                SqlParameter parUser = new SqlParameter("@Username", SqlDbType.NVarChar,  50 );
                parUser.Value = usin.UserName_field;
                SqlParameter parPass = new SqlParameter("@Password", SqlDbType.NVarChar,  20 );
                parPass.Value = usin.Password_field;
                SqlParameter parFio = new SqlParameter("@Fio", SqlDbType.NVarChar,  150 );
                parFio.Value = usin.FIO_field;
                usercomm.Parameters.Add(parID);
                usercomm.Parameters.Add(parUser);
                usercomm.Parameters.Add(parPass);
                usercomm.Parameters.Add(parFio);
                try
                {
                    userconn.Open();
                    usercomm.Connection = userconn;
                    usercomm.ExecuteNonQuery();
                    return (int)usercomm.Parameters["@UserID"].Value;
                }
                catch (SqlException sqlerror)
                {

                    throw new ApplicationException("Ошибка соединения с базой!");
                }
                finally
                {
                    userconn.Close();
                }
        }   
      }
    }

Вот текст самой процедуры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ALTER PROCEDURE [dbo].[InsertUser]
@UserID int OUTPUT,
@Username varchar( 50 ),
@Password varchar( 20 ),
@Fio varchar( 150 )
AS
BEGIN
DECLARE @error int, @Guest bit
IF @Password IS NULL SET @Guest =  1  ELSE SET @Guest =  0 
INSERT INTO dbo.Users (UserName, Password, FIO, Guest) VALUES(@Username, @Password, @Fio, @Guest)
SET @error = @@ERROR
IF @error != 0  BEGIN
	IF @error =  515  RAISERROR ('Фамилия не может являться пустой. Проверьте правильность данных!',  1 ,  1 ) 
	ELSE RAISERROR ('Неизвестная ошибка, обратитесь к администратору!',  1 ,  1 )
						END
SET @UserID = @@IDENTITY
END

Ну, и на всякий случай, код где вводятся данные:
Код: plaintext
1.
2.
3.
4.
5.
6.
    Store_DB_Executor sde;
    ...
    protected void parsing(object Sender, EventArgs e)
    {
        UserInfo hypouser = new UserInfo(TextBox1.Text, TextBox2.Text, TextBox3.Text);
        sde.InsertUser(hypouser);
    }

И код класса юзера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
public class UserInfo
{
    int UserID;
    string UserName, Password, FIO;
    DateTime RegistrationDate;
    bool Guest;

    public UserInfo(string UserName, string Password, string FIO)
	{
        this.UserName = UserName;
        this.Password = Password;
        this.FIO = FIO;
	}

    public int UserID_field
    {
        get { return UserID; }
        set { UserID = value; }
    }

    public string UserName_field
    {
        get { return UserName; }
        set { UserName = value; }
    }

    public string Password_field
    {
        get { return Password; }
        set { Password = value; }
    }

    public string FIO_field
    {
        get { return FIO; }
        set { FIO = value; }
    }

    public DateTime RegistrationDate_field
    {
        get { return RegistrationDate; }
        set { RegistrationDate = value; }
    }

    public bool Guest_field
    {
        get { return Guest; }
        set { Guest = value; }
    }
...
Рейтинг: 0 / 0
Передача параметров в ХП
    #37312680
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dezmond,

Вот на вскидку: имена TextBox1, TextBox2, TextBox3 вообще ничего не говорят.
Убедитесь сперва что они не перепутаны.
И именовать их надо как-то осмысленно!
...
Рейтинг: 0 / 0
Передача параметров в ХП
    #37312709
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarkanDezmond,

Вот на вскидку: имена TextBox1, TextBox2, TextBox3 вообще ничего не говорят.
Убедитесь сперва что они не перепутаны.
И именовать их надо как-то осмысленно!

Блин, посыпаю голову пеплом, переназвал контролы и проблема исчезла. Но ведь проверял это место 10 раз, ничего перепутано не было.
Я и типы менял, и параметры по-другому создавал, а причина-то на поверхности была...

Все, закрывайте тему.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Передача параметров в ХП
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]