Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
C# 如何验证OdbcConnection是否为只读?_C#_Database - Fatal编程技术网

C# 如何验证OdbcConnection是否为只读?

C# 如何验证OdbcConnection是否为只读?,c#,database,C#,Database,我有一个开放的OdbcConnection,我正在尝试使用OdbcCommand写入数据库,我想在插入数据之前验证数据库是否为只读 我可以使用try-and-catch,但我希望有更好的解决方案 提前谢谢 OdbcConnection con = new OdbcConnection("DSN=SERVER1;UID=User;PWD=User"); try { con.Open(); OdbcCommand cmd = con.CreateCommand();

我有一个开放的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()
}
以下是数据库为只读时的输出:

错误[HY000]实体数据库错误10013:事务为只读


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

SELECT name, is_read_only 
FROM sys.databases 
WHERE name = 'MyDBNAme'
GO
--当数据库设置为只读模式时,返回1 in is_read_only


对于oracle db,您可以使用OPEN_MODE属性进行检查。

这取决于数据库。对于SQL Server,问题不是odbcconnection是只读的,而是数据库表是只读的吗。我只是觉得我可以从odbcconnection获取信息:)