当前,我有一段代码在DataGridView中显示表
using (SQLiteConnection con = new SQLiteConnection(DBC.connectionstring))
{
con.Open();
SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM Income", con);
DataSet ds = new System.Data.DataSet();
da.Fill(ds, "Info");
IncomeData.DataSource = ds.Tables[0];
}
但是,因为我将不得不多次重用代码。我决定创建一个新类,让我可以这样做。如下图所示:
public void DBLoad(string tableName, DataGridView DGVname)
{
DBC = new DatabaseConnection();
DBC.getConnection() // connects to .db file
using (SQLiteConnection con = new SQLiteConnection(DBC.connectionstring))
{
con.Open();
SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM '" + tableName + '"', con);
System.Data.DataSet ds = new System.Data.DataSet();
da.Fill(ds, "Info");
DGVname.DataSource = ds.Tables[0];
}
}
但是我遇到的问题是tableName
将出现在SQL查询中,并且我一直遇到需要删除引号的问题。
如果我这样做:
className.DBLoad("Income", IncomeData);
然后发生以下错误:
System.Data.SQLite.SQLiteException:'无法识别的SQL逻辑错误令牌:“'Income”“'
我尝试做:
tableName = tableName.Replace("\"", string.Empty);
但是我仍然遇到相同的错误。所以现在我不知道该怎么办。
答案 0 :(得分:1)
据我所知,您不需要在表名旁边打勾。
勾是:'
我还建议您按以下方式使用def get_decrypted_stream(s3_object):
region_name = 'us-east-1'
encryptedImageBytes = s3_object.get()['Body'].read()
print("Decoded file : {}".format(encryptedImageBytes))
client = boto3.client('kms', region_name=region_name)
response = client.decrypt( CiphertextBlob=encryptedImageBytes)
data = meta[u'Plaintext']
return io.BytesIO(data)
方法替换查询中的表名:
String.Format
这行代码:
String.Format("Select * FROM {0}",tableName);
应该是这样的:
SQLiteDataAdapter da = new SQLiteDataAdapter("SELECT * FROM '" + tableName + '"', con);
参考文献: