C#数据库工具开发(十)
问题(07/24-07/25)
1. 如何实现一个页面关闭触发上级页面的响应?
问题背景:我有一个页面显示某个数据库中所有表名和表结构,在此页面可以打开另一个修改或创建新表的页面,完成后,我想立即在显示页面刷新,让刚刚修改或生成的表也能出现在列表中。
解决方法:由于修改添加页面是在显示页面生成的:
1 | formxml = new FormXMLExecute("*Oracle*", filePath.Text); |
我们只需要在创建formxml时添加一个页面关闭事件即可:
1 | formxml = new FormXMLExecute("*Oracle*", filePath.Text); |
在页面关闭事件中:
1 | private void FromXMLExecute_FormClosing(object sender, FormClosingEventArgs e) |
实现想要完成的功能(如刷新页面等)
2. DataGridViewCheckBox的响应事件
问题背景:想要实现点击DataGridViewCheckBox后,刷新页面
解决方法:这个的即时响应和DataGridViewTextBox或DataGridViewComboBox相比简单很多,能直接用现有事件
1 | private void dataXML_CellContentClick(object sender, DataGridViewCellEventArgs e) |
唯一需要注意的和之前提到的一样:用单元格EditedFormattedValue
属性而不是Value
属性。
3. 如何查询某个表中所有设置了索引的字段?
Oracle:
1 | select a.column_name from all_ind_columns a, all_indexes b where a.index_name=b.index_name and a.table_name = upper('"+tableName+"') order by a.table_name"; |
SQLServer:
1 | "USE " + DBName+" ;SELECT colname=d.name FROM sysindexes a JOIN sysindexkeys b ON a.id=b.id AND a.indid=b.indid JOIN sysobjects c ON b.id=c.id JOIN syscolumns d ON b.id=d.id AND b.colid=d.colid WHERE a.indid NOT IN(0,255) AND c.name='"+tableName+"'"; |
3.1 更好的查询表中所有索引以及对应列名的sql查询语句
1 | use GMP_BF; |