您好,我目前正在图书馆系统中工作,我想查看特定成员拥有多少本书。
每当我向学生发行一本书时,我都希望向他们添加副本。
我尝试过:
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);
但也不起作用。
我不知道如何解决此问题,因此将不胜感激。还是有办法实现这一目标?
答案 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)
。