根据SQL查询的结果打开Winform



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

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

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

所以如果ClientID是1,那么按钮应该打开Form1,如果ClientID是2,按钮应该打开Form2。

我的问题是我如何让WinForms运行查询按钮单击,然后打开表中找到的相应表单?

您需要编写一个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);

我希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新