为什么'显示用户'命令在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);
}
}``
这是一个可以使用的有效查询:
select user from dual
您不能使用show user
,因为这是SQL* plus特定的命令。这不是一个有效的Oracle SQL查询。
编辑
关于获取最后的登录信息,从Oracle 12c开始,您可以这样获取:
select last_login
from dba_users
where username = user
…但是你需要有DBA
角色才能运行它