根据SQL Query的结果打开Winform

时间:2014-07-01 10:51:30

标签: c# sql winforms ms-access-97

我目前正在将Access97数据库应用程序转移到新的WinForms应用程序。

我们为所有"账户"提供了一个核心表格。它显示了一般帐户数据,在该表单中有一个打开另一个表单的按钮,应用程序使用下表的示例从SQL查询中获取表单名称。

| ClientID | FormName |
+----------+----------+
|    1     |   frm1   |
|    2     |   frm2   |

因此,如果ClientID为1,则如果ClientID为2,则按钮应打开Form1,按钮应打开Form2。

我的问题是如何让WinForms在按钮上运行查询,然后打开表格中的相应表格?

非常感谢任何帮助。

1 个答案:

答案 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);

我希望这会有所帮助。

注意。这没有错误处理。