图书馆系统中拥有的会员书籍

时间:2020-03-24 04:37:34

标签: c# sql ado.net

您好,我目前正在图书馆系统中工作,我想查看特定成员拥有多少本书。

每当我向学生发行一本书时,我都希望向他们添加副本。

我尝试过:

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 :(得分:0)

如果要插入新记录:

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用于字符串是not recommended。相反,您应该像这样准备值:

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

其中VarChar是数据库中字段的类型,而30是数据库中字段的最大长度。我希望从这段代码中看到VARCHAR(30)