C# 输出未显示在C中的文本框中#

C# 输出未显示在C中的文本框中#,c#,oracle11g,C#,Oracle11g,我是C#新手,我已经将它与Oracle11g连接起来,并使用Visual Studio 2013作为工具。我试图显示查询返回到文本框的“名称”,但它既不显示错误消息,也不显示输出。请帮我解决这个问题。谢谢这是我的密码 private void button1_Click(object sender, EventArgs e) { try { string oradb = "Data Source=ORCL;User Id=hr; P

我是C#新手,我已经将它与Oracle11g连接起来,并使用Visual Studio 2013作为工具。我试图显示查询返回到文本框的“名称”,但它既不显示错误消息,也不显示输出。请帮我解决这个问题。谢谢这是我的密码

private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string oradb = "Data Source=ORCL;User Id=hr; Password=123;";
            OracleConnection conn = new OracleConnection(oradb);  // C#
            conn.Open();
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = conn;
            cmd.CommandText = "select name from std where cgpa=2.82;";
            cmd.CommandType = CommandType.Text;
            OracleDataReader dr = cmd.ExecuteReader();
            dr.Read();
            textBox1.Text = dr.GetString(0);
             conn.Dispose();
        }
        catch (Exception ex) { MessageBox.Show("\n"+ex); }
    }
设置textBox1.Text=dr.GetString后(0);
它给了我附加的异常。

数组索引从索引0开始,而不是从1开始。返回的字符串(如果有)位于

编写代码的更正确方法如下

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        string oradb = "Data Source=ORCL;User Id=hr; Password=123;";

        // Use the using statements around disposable objects....
        using(OracleConnection conn = new OracleConnection(oradb))
        using(OracleCommand cmd = new OracleCommand())
        {
             conn.Open();

             // These two parameters could be passed directly in the
             // OracleCommand constructor....
             cmd.Connection = conn;
             cmd.CommandText = "select name from std where cgpa=2.82;";

             // Again using statement around disposable objects
             using(OracleDataReader dr = cmd.ExecuteReader())
             {
                  // Check if you have a record or not
                  if(dr.Read())
                      textBox1.Text = dr.GetString(0);
             }
        }
    }
    catch (Exception ex) { MessageBox.Show("\n"+ex); }
}
如果您的代码只返回一条记录和一列,那么您可以使用性能更高的ExecuteScalar,而无需构建OracleDataReader

 // Again using statement around disposable objects
 object result = cmd.ExecuteScalar();
 if(result != null)
     textBox1.Text = result.ToString();

我做了和你说的一样的事,但这是一个例外。我已经更新了包含该例外情况的问题。请再看看这个问题。感谢在连接的打开调用中给出了错误。这意味着您的连接字符串是错误的。如果连接字符串是错误的,应该是什么。我正在使用密码为123的人力资源帐户。有东西阻止您的提供商访问数据库。我只能建议四处寻找错误ORA-12154的可能原因,例如这一个
 // Again using statement around disposable objects
 object result = cmd.ExecuteScalar();
 if(result != null)
     textBox1.Text = result.ToString();