为什么'显示用户'命令在c#中给出错误,而在Oracle's SQL Plus中工作

本文关键字:Oracle 而在 SQL 工作 Plus 错误 出错 命令 用户 为什么 显示 | 更新日期: 2023-09-27 18:13:54

我使用Oracle 12c。当我打开Sql Plus(在用户登录之后)并键入show user时,我得到一个显示当前用户名的输出。但是当我在c#中从命令文本传递相同的查询时,我得到一个错误,说明无效查询。是否有一种方法可以从oracle c#中获取用户名,以及如何从oracle c#中获取最后登录(照片附件)。

SQL Plus中的日期和时间:(http://i60.tinypic.com/6549s9.png)

c#程序出错:(http://i59.tinypic.com/2lc5mb.png)
    private void LoginButton_Click(object sender, EventArgs e)
    {
        try
        {
            String connectionString = "Data Source = (DESCRIPTION =" +
    "(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))" +
    "(CONNECT_DATA =" +
      "(SERVER = DEDICATED)" +
      "(SERVICE_NAME = BU)" +
    ")" +
  "); User Id =" + UsernameTextBox.Text + ";" + "password =" + PasswordTextBox.Text + ";";
            OracleConnection con = new OracleConnection();
            con.ConnectionString = connectionString;
            con.Open();
            OracleCommand cmd = new OracleCommand();
            cmd.CommandText = "show user;";
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            OracleDataReader dr = cmd.ExecuteReader();
            dr.Read();
            MetroFramework.MetroMessageBox.Show(this, "Login Sucessful! 'n", dr.GetString(0), MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
        catch (OracleException ex) {
            MetroFramework.MetroMessageBox.Show(this, "Unable to connect to database. 'n'nException Details: " + ex.Message , "Error!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
    }``

为什么'显示用户'命令在c#中给出错误,而在Oracle's SQL Plus中工作

这是一个可以使用的有效查询:

select user from dual

您不能使用show user,因为这是SQL* plus特定的命令。这不是一个有效的Oracle SQL查询。

编辑

关于获取最后的登录信息,从Oracle 12c开始,您可以这样获取:

select last_login
  from dba_users
 where username = user

…但是你需要有DBA角色才能运行它

相关文章: