我目前正在将Access97数据库应用程序转移到新的WinForms应用程序。
我们为所有"账户"提供了一个核心表格。它显示了一般帐户数据,在该表单中有一个打开另一个表单的按钮,应用程序使用下表的示例从SQL查询中获取表单名称。
| ClientID | FormName |
+----------+----------+
| 1 | frm1 |
| 2 | frm2 |
因此,如果ClientID为1,则如果ClientID为2,则按钮应打开Form1,按钮应打开Form2。
我的问题是如何让WinForms在按钮上运行查询,然后打开表格中的相应表格?
非常感谢任何帮助。
答案 0 :(得分:2)
您需要编写SQL帮助程序方法。像下面的东西(我没有检查和黑客攻击)
public static T SQLGet<T>(SqlConnection conn, string sql)
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = conn;
command.CommandTimeout = 0; // No timeout - set or remove.
command.CommandText = sql;
return (T)Convert.ChangeType(Command.ExecuteScalar(), typeof(T));
}
}
你可以像
一样使用它SqlConnection conn = new SqlConnection(someValidConnectionString);
string formName = Utilities.SQLGet<string>(conn,
"SELECT [FormName] " +
"FROM [SomeTable] WHERE [ClientID] = 1;") // Not considering SQL injection here!
现在,您可以使用带有检索到的名称formName
Type t = assembly.GetType(formName);
Form frm1 = (Form)Activator.CreateInstance(t);
我希望这会有所帮助。
注意。这没有错误处理。