Книги участника, находящиеся во владении в Библиотечной системе - PullRequest
0 голосов
/ 24 марта 2020

Здравствуйте. В настоящее время я работаю в библиотечной системе и хочу посмотреть, сколько книг принадлежит конкретному члену c.

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

Я пытался:

public void StudentPossession()
    {
        cm = new SqlCommand("INSERT INTO tblStudent(stCopies) VALUES (@stCopies)", cn);
        cm.Parameters.AddWithValue("@stCopies", txtCopies.Text);
        cm.ExecuteNonQuery();
    }

, но он не вставляется в строку членов, вместо этого он показывает

|-------------|---------------|------------|
|   ID        |  studNumber   |  Copies    |
|-------------|---------------|------------|
|   1         |  34543534     |    NULL    |
|-------------|---------------|------------|
|   2         |  NULL         |    1       |
|-------------|---------------|------------|

Я также пытался:

cm = new SqlCommand("INSERT INTO tblStudent(stCopies) VALUES (@stCopies) WHERE studNumber ='" + txtStudNumber.Text + "'", cn);

Но тоже не работает.

Я не знаю, как это исправить, поэтому любая помощь будет оценена. Или есть в любом случае, как этого добиться?

1 Ответ

0 голосов
/ 24 марта 2020

Если вы хотите вставить новую запись:

cm = new SqlCommand("INSERT INTO tblStudent (studNumber, stCopies) VALUES (@studNumber, @stCopies)", cn);
cm.Parameters.AddWithValue("@stCopies", txtCopies.Text);
cm.Parameters.AddWithValue("@studNumber", txtStudNumber.Text);
cm.ExecuteNonQuery();

Если вы хотите обновить существующую запись, а не вставлять новую, используйте этот код:

cm = new SqlCommand("UPDATE tblStudent SET stCopies = @stCopies WHERE studNumber = @studNumber", cn);
cm.Parameters.AddWithValue("@stCopies", txtCopies.Text);
cm.Parameters.AddWithValue("@studNumber", txtStudNumber.Text);
cm.ExecuteNonQuery();

Также не рекомендуется использовать AddWithValue для строк. Вместо этого вы должны подготовить значения следующим образом:

cmd.Parameters.Add("@studNumber", SqlDbType.VarChar, 30).Value= txtStudNumber.Text;

Где VarChar - это тип поля в базе данных, а 30 - максимальная длина поля в базе данных. Из этого кода я бы ожидал увидеть VARCHAR(30).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...