Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 并非所有数据都通过Oracle.ManagedDataAccess可见_.net_Oracle_Oracle10g_Oracle Sqldeveloper - Fatal编程技术网

.net 并非所有数据都通过Oracle.ManagedDataAccess可见

.net 并非所有数据都通过Oracle.ManagedDataAccess可见,.net,oracle,oracle10g,oracle-sqldeveloper,.net,Oracle,Oracle10g,Oracle Sqldeveloper,问题摘要 我在通过Oracle.ManagedDataAccess使用Oracle数据库时遇到了奇怪的行为:应用程序的数据访问组件只能看到从该应用程序添加的表数据 复制步骤 Oracle表: CREATE TABLE TEST_TABLE ( "TIMESTAMP" DATE DEFAULT SYSDATE NOT NULL ) 测试应用程序: class Program { static void Main(string[] args) { Conso

问题摘要

我在通过Oracle.ManagedDataAccess使用Oracle数据库时遇到了奇怪的行为:应用程序的数据访问组件只能看到从该应用程序添加的表数据

复制步骤

Oracle表:

CREATE TABLE TEST_TABLE (
    "TIMESTAMP" DATE DEFAULT SYSDATE NOT NULL
)
测试应用程序:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Before run, count = {0}", GetCount());
        InsertNew();
        Console.WriteLine("After app insert, count = {0}", GetCount());

        Console.WriteLine("Insert row via SQL developer and press enter");
        Console.Read();

        Console.WriteLine("After SQL developer insert, count = {0}", GetCount());

       Console.Read();
    }

    private static void InsertNew()
    {
        using (var connection = OpenConnection())
        {
            var command = new OracleCommand("INSERT INTO TEST_TABLE(TIMESTAMP) VALUES(:Timestamp)", connection);
            command.Parameters.Add(new OracleParameter("Timestamp", OracleDbType.Date)).Value = DateTime.Now;
            command.ExecuteNonQuery();
        }
    }



    private static int GetCount()
    {
        using (var connection = OpenConnection())
        {
            var command = new OracleCommand("SELECT COUNT(1) FROM TEST_TABLE", connection);
            return (int)(decimal)command.ExecuteScalar();
        }
    }

    private static OracleConnection OpenConnection()
    {
        var connectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
        var connection = new OracleConnection(connectionString);
        connection.Open();
        return connection;
    }
}
当应用程序提示通过SQL developer插入行时,我运行

INSERT INTO TEST_TABLE(TIMESTAMP) VALUES(SYSDATE);
连接字符串如下所示:

Data Source=DATA_SOURCE_NAME;User Id=USER_ID;Password=PASS;
Oracle版本:10g 10.2.0.5.0 Oracle.ManagedDataAccess版本:4.121.2.0

结果

第一次运行时,我得到了以下结果:

Before run, count = 0
After app insert, count = 1
Insert row via SQL developer and press enter

After SQL developer insert, count = 1
Before run, count = 1
After app insert, count = 2
Insert row via SQL developer and press enter

After SQL developer insert, count = 2
在第二次运行时,我得到了以下结果:

Before run, count = 0
After app insert, count = 1
Insert row via SQL developer and press enter

After SQL developer insert, count = 1
Before run, count = 1
After app insert, count = 2
Insert row via SQL developer and press enter

After SQL developer insert, count = 2
因此,应用程序可以看到它添加的数据,包括以前运行时添加的数据,但看不到通过SQL developer添加的数据

通过SQL developer运行查询时,将返回所有数据

问题:


所以问题是什么会导致这种行为?如何确保应用程序可以获取所有数据?

我找到了答案-复制步骤缺少步骤,请在执行insert后在SQL plus中按[Commit]