当前位置: 首页 > 面试题库 >

数据为空。不能在空值上调用此方法或属性。(使用组合框)

司空均
2023-03-14
问题内容

嗨,我在表格中将使用空值来填充组合框。我不确定该怎么做。当我运行以下代码时,出现错误:

数据为空。不能在空值上调用此方法或属性。

我需要帮助,并且是MySQL的新手

编码 :

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string constring = "datasource=localhost;port=3306;username=root;password=root";
    string Query = "SELECT * from database.check WHERE patientname IS NOT NULL";
    MySqlConnection conDataBase = new MySqlConnection(constring);
    MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
    MySqlDataReader myReader;

    try
    {
        conDataBase.Open();
        myReader = cmdDataBase.ExecuteReader();

        while (myReader.Read())
        {
            string namethestore = myReader.GetString("namethestore");
            string checkername = myReader.GetString("checkername");
            this.textBox65.Text = namethestore;
            this.textBox66.Text = checkername;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

问题答案:

当您的一个或多个字段包含NULL(DBNull.Value)时,您将无法对其使用GetString
您需要使用IsDBNull方法检查它们是否为空,然后选择要在文本框中输入的值。通常是一个空字符串

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string constring = "datasource=localhost;port=3306;username=root;password=root";
    string Query = "SELECT * from database.check WHERE patientname IS NOT NULL";
    using(MySqlConnection conDataBase = new MySqlConnection(constring))
    using(MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase))
    {
        try
        {
            conDataBase.Open();
            using(MySqlDataReader myReader = cmdDataBase.ExecuteReader())
            {
                int namePos = myReader.GetOrdinal("namethestore");
                int checkerPos = myReader.GetOrdinal("checkername");
                while (myReader.Read())
                {
                    string namethestore = myReader.IsDBNull(namePos) 
                                          ? string.Empty 
                                          : myReader.GetString("namethestore");
                    string checkername = myReader.IsDBNull(checkerPos) 
                                          ? string.Empty
                                          : myReader.GetString("checkername");
                    this.textBox65.Text = namethestore;
                    this.textBox66.Text = checkername;
                }
           }
      }
}

我建议也围绕一次性对象使用using语句。这样可以确保当您不再需要它们时,也可以进行适当的关闭和处理,以防万一。



 类似资料:
  • 问题内容: 我正在开发一种应用程序,可以从数据库中获取电影信息以及添加,更新和删除电影。在数据库中,我有三个表(电影,流派和电影流派<-存储电影及其流派/秒)。除了一件事,一切都可以正常工作,那就是电影没有任何类型的流派(应该有可能)。 在下面的方法中,会发生问题,并引发以下异常: 数据为Null。 不能在Null值上调用此方法或属性。 原因(当然)是因为电影没有任何体裁,所以sproc返回nul

  • (免责声明:人们通过facebook、firebase等请求询问使用异步操作时数据为空/不正确时,会产生很多问题。我提出这个问题的目的是为每个从android异步操作开始的人提供一个简单的答案。) 我试图从我的一个操作中获取数据,当我使用断点或日志调试它时,值就在那里,但当我运行它时,它们总是空的,我该如何解决这个问题呢? 火力基地 脸书 等。

  • 在我的ATG应用程序中,当我使用checkFormRedirect将用户重定向到带有一些参数的jsp页面时,我得到的参数为NULL。请参阅下面的FormHandler代码: UserFormHandler: test.jsp: 此外,我尝试在formHandler中使用变量并设置值,但仍然得到的值为NULL。能不能帮点忙。

  • 我做错了什么?我需要组件的完整构造函数吗?这是因为cs是静态的?springboot不是要自动填充这些值吗?

  • 在javafx2应用程序中,ComboBox应该显示一个项目列表,在示例中,为了简单起见,它们是s。 此列表包含一个项,因为我希望不允许用户做出任何选择。 因为我在玩ComboBox的转换器属性,我想知道我是否可以用它来为无选择的情况提供一个很好的表示,例如“[无”而不是空行。 但是我发现toString(对象对象)是从来没有要求空项目。 下面是复制案例的最短代码。包括版本信息。 这里是输出,因为

  • 我对学习java中的方法还不熟悉。在python中,使用“函数”很容易,但我最近了解到java没有类似的功能。我有一个方法,应该返回n1和n2中的最低值。我在公共静态int函数的行中得到一个错误。。。 但语法似乎没有任何问题。