如何验证OdbcConnection是否为只读

本文关键字:OdbcConnection 是否 只读 验证 何验证 | 更新日期: 2023-09-27 17:50:14

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

我可以使用try and 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] Database ERROR 10013: Transaction is read-only

如何验证OdbcConnection是否为只读

对于sql server,可以使用:信息存储在sys.databases.

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

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

对于oracle数据库,可以使用OPEN_MODE属性进行检查。