我在创建SQLite ODBC只读连接时遇到问题。
我的问题是:
如何将ODBC SQLite连接字符串设为只读?
我正在研究从SQLite数据库下载查询的C#应用程序。用户将提供SQL语句。
我将查询作为VSTO对象Excel.QueryTable下载到Microsoft Excel。此VSTO对象的要求之一是它需要ODBC连接字符串。这是我的连接字符串:
ODBC; DRIVER={SQLite3 ODBC Driver}; Database=myDb.db;Read Only=True;
应用程序正常运行,因此它运行查询并将其下载到Excel,但连接字符串不是只读的。我想要阻止人们更改数据库,只传递SELECT SQL语句。
因此,即使我的连接字符串包含Read Only = True,用户也可以对数据库进行更改。我将连接字符串传递给名为Export的方法,如下所示:
我创建了一个名为
的类class ExcelQueryTable
处理导出为excel。
构造函数引用Excel应用程序
public ExcelQueryTable(Excel.Application ExcelApp)
此类具有执行导出的方法
public void Export(string StartCell, string Connection, string CommandText)
{
Excel.Worksheet sheet = null;
Excel.Range rng = null;
Excel.QueryTable qry = null;
//add query table
sheet = wb.ActiveSheet as Excel.Worksheet;
rng = sheet.get_Range(StartCell);
qry = sheet.QueryTables.Add(Connection, rng, CommandText);
//retreive data
qry.EnableRefresh = false;
qry.FillAdjacentFormulas = true;
qry.Refresh();
}