我正在为我的项目开发一个图书馆系统。我的顾问让我为过期的书籍计算罚款。我有3个文本框,一个用于学生ID,书名和isbn,我还有两个日期时间选择器;一个是约会,一个是截止日期。我想要一个创建一个命令,如果借款人没有在duedate上退还书籍,并且将在我的表'Borrowbook'专栏'Penalty'中输入罚款,那么将计算罚款。
这是我的代码:
string constring = ("Data Source=.\\SQLEXPRESS;Integrated Security=True");
SqlConnection con = new SqlConnection(constring);
con.Open();
SqlCommand cmd = new SqlCommand("SELECT [Student ID], ISBN, Title, Date, [Due Date], Penalty FROM Borrowbook;", con);
try
{
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataTable Records = new DataTable();
sda.Fill(Records);
BindingSource bsource = new BindingSource();
bsource.DataSource = Records;
dataGridView1.DataSource = bsource;
sda.Update(Records);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (dateTimePicker2.Value < DateTime.Now)
{
cmd.CommandText = "INSERT INTO Borrowbook (Penalty) VALUES (@Penalty)";
SqlParameter p1 = new SqlParameter("@Penalty", SqlDbType.Date);
p1.Value = 50;
cmd.Parameters.Add(p1);
cmd.ExecuteNonQuery();
}
}
此代码无效但运行正常且没有任何错误。但我认为这是我的代码的想法。我将此代码放在按钮中,我的datagridview也将显示我的数据。
答案 0 :(得分:1)
您尚未执行查询。
你需要:
cmd.ExecuteNonQuery();
您还需要一个指向正确SqlConnection
数据库的SQL Server
对象。
作为补充说明,您的数据库架构看起来有点模糊,您如何知道哪个人受到了处罚?您尚未插入任何其他标识符,只是惩罚金额。