2014-03-13 25 views
0

我有一个开放的OdbcConnection,我试图写入数据库使用OdbcCommand,我想验证数据库我插入数据前是否只读。如何验证OdbcConnection是否只读?

我可以使用try和catch,但我希望有更好的解决方案。

在此先感谢。

OdbcConnection con = new OdbcConnection("DSN=SERVER1;UID=User;PWD=User"); 
try 
{  
    con.Open(); 
    OdbcCommand cmd = con.CreateCommand(); 
    cmd.CommandText = "INSERT INTO table1 (NAME, AGE) VALUES ('Test', 100)"; 
    cmd.ExecuteNonQuery(); 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 
finally 
{ 
    con.Close() 
} 

下面是当数据库是只读的输出:

ERROR [HY000] SOLID数据库错误10013:事务是只读的

+2

这取决于数据库。对于SQL Server,http://stackoverflow.com/q/2930251/11683。 – GSerg

+0

所以问题不是odbcconnection只读,而是数据库表只读? –

+0

Paul Zahra - 这就是我想知道的。我只是想我可以从odbcconnection中获取信息:) – amkleist

回答

0

对于SQL Server,你可以使用: 信息存储在sys.databases中。

SELECT name, is_read_only 
FROM sys.databases 
WHERE name = 'MyDBNAme' 
GO 

- 当数据库设置为只读模式时,在is_read_only中返回1。

对于oracle db你可以使用OPEN_MODE属性来检查。

+0

该解决方案对我来说不起作用,不幸:( – amkleist