我是用Visual Studio和c#编写一个简单的课程管理系统,但是在编写课程查询功能时遇到了一些问题。
Error系统类型的异常。为"resultDs"抛出NullReferenceException。表'
下面是我的代码private void SelectResultForm_Load(object sender, EventArgs e)
{
string sql = "select ca.id,c.name as coures_name,t.real_name as teacher_name,ca.course_time,ca.course_place,ca.max_num";
sql += " from course_arrange ca,course c, teacher t where ca.course_id = c.id and ca.teacher_id = t.id";
DataSet ds = SQLHelper.GetData(sql);
courseArrangeGridView.DataSource = ds.Tables[0];
int firstArrangeId = (int)ds.Tables[0].Rows[0][0];
sql = "select * from select_result where course_arrange_id" + firstArrangeId;
DataSet resultDs = SQLHelper.GetData(sql);
ResultGridView.DataSource = resultDs.Tables[0];//error
}
我在这里遇到了一个断点,结果是d。表为空。但是我检查了数据库连接没有问题。
我是一个新手,希望大家能给我一些建议
正如Charlieface所说,您的sql语法有一个错误。您需要将where course_arrange_id" + firstArrangeId
更改为where course_arrange_id=" + firstArrangeId.
当然,这并不一定是这个错误的原因。如果确信数据库连接正常,可以在ResultGridView.DataSource = resultDs.Tables[0];
处设置断点,然后查看resultDs的值。如果resultDs的值都为null,则需要检查sql语句是否存在问题。您可以将sql放入数据库管理工具中,看看它是否能成功运行。
如果这一切都是好的,你需要给SQLHelper.GetData
的代码。这使得分析问题更容易。
同时,有必要防止SQL注入。如果你只是做简单的练习,你可以使用参数过滤的方法。