无法转换“System.Boolean”类型的对象以键入“System.String”

时间:2013-11-20 19:36:12

标签: c# sql

我尝试运行程序时遇到此错误。我相信它是因为在SQL Server中这是对还是错? 1还是0?有谁知道如何解决?

  void StaticS()
    {

        string constring = "REMOVED";
        string Query = "REMOVED";
        SqlConnection conDataBase = new SqlConnection(constring);
        SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase);
        SqlDataReader myReader;
        try
        {
            conDataBase.Open();
            myReader = cmdDataBase.ExecuteReader();

            while (myReader.Read())
            {
                string sName = myReader.GetString(0);
                comboBox17.Items.Add(sName);

            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }

3 个答案:

答案 0 :(得分:2)

string sName = myReader[0].ToString();

如果您只想从DataReader获取值的字符串表示而不关注实际值类型 - 您可以使用DataReader索引器并只调用ToString()方法。

答案 1 :(得分:2)

看看这一行:

string sName = myReader.GetString(0);

GetString方法返回string,因此代码中没有强制转换。但GetString本身是通过阅读字段0并尝试将其转换为string来实现的。看起来字段0是一个布尔字段,并且没有从布尔到字符串的自动转换。因此GetString()失败。

相反,您可以明确执行转换:

string sName = myReader[0].ToString();

此处,myReader[0]读取字段并将值返回为object。然后由你决定如何把它变成一个字符串。

答案 2 :(得分:0)

听起来字段0是bit字段,在这种情况下你可以使用:

bool sName = myReader.GetBoolean(0);