报错:System.NullReferenceException:“未将对象引用设置到对象的实例。”代码如下: private FormLogin login; public FormMain(FormLogin login) { this.login = login; InitializeComponent(); } //保存分数,更改记录 private void Save(int sco) { string ID = login.b; string sql1 = $"update Users set Score = '{sco}' where LoginID = '{ID}'"; Links.ExecuteSql(sql1); string sql2 = $"select maxScore from Users where LoginID='{ID}' "; SqlDataReader dataReader1 = Links.reader(sql1); SqlDataReader dataReader2 = Links.reader(sql2); while (dataReader2.Read()) { int a = dataReader2.GetInt32(0); if(a < count) { string sql3 = $"update Users set maxScore = '{sco}' where LoginID = '{ID}'"; Links.ExecuteSql(sql3); } } dataReader1.Close(); } 关于FormMain窗口中的字段b:public string b = ""; private void txtUser_TextChanged(object sender, EventArgs e) { b = txtUser.Text; }
时间: 2024-02-10 18:12:09 浏览: 72
未将对象引用设置到对象的实例 (System.NullReferenceException)
根据你提供的代码和报错信息,NullReferenceException异常可能是由以下代码引起的:
```csharp
SqlDataReader dataReader1 = Links.reader(sql1);
```
在这行代码中,你应该使用sql2而不是sql1来获取dataReader2对象,因为sql1语句对应的是更新操作,不会返回查询结果集,所以返回的dataReader1对象为空,它可能导致在后面dataReader2.Read()的时候出现空引用异常。
将上面的代码修改为以下代码应该可以解决问题:
```csharp
SqlDataReader dataReader2 = Links.reader(sql2);
```
希望这能够帮助你解决问题。
阅读全文