在运行时修改TableAdapter命令

时间:2012-03-28 03:25:10

标签: sql-server oledb tableadapter

是否可以在运行时修改tableadapter的SELECT,UPDATE,DELETE和INSERT命令?我想要做的是根据用户在应用程序打开时选择的连接类型(SQL Server或Access)为tableadapter设置命令。

基本上,我希望tableadapter名称保持不变,所以我不必将if语句放在我称之为tableadapter.fill或.update方法的所有地方。相反,我想在选择连接字符串后放入if语句,并根据用户选择的内容修改SELECT,UPDATE,DELETE和INSERT命令。像下面的东西

If ConnectionString  = Access Then
    tableadapter.selectcommand="SELECT...FROM AccessDbase"
Else
    tableadapter.selectcommand="SELECT...FROM SQLDbase"
End if 

在不创建两个单独的应用程序(一个连接到Access和on for SQL Server)的情况下,最好的方法是什么?

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

您可以通过更新 query 直接修改 CommandText

daTableAdapter.Adapter.UpdateCommand.CommandText = sql_query;

要更新连接字符串,您需要更新 SqlConnectiontable adapter

daTableAdapter.Connection.ConnectionString = myConnectionString;

您还可以使用以下方法专门修改一个命令的 Connection

daTableAdapter.Adapter.UpdateCommand.Connection.ConnectionString = myConnectionString;

答案 1 :(得分:-1)

您可以通过设置适配器commands.commandtexts

来更改select insert o update命令
If ConnectionString = Access Then
    tableadapter.SelectCommand.CommandText = "SELECT...FROM AccessDbase"
    tableadapter.InsertCommand.CommandText = "INSERT INTO AccessDbase..."
    tableadapter.UpdateCommand.CommandText = "UPDATE AccessDbase SET ..."
    tableadapter.DeleteCommand.CommandText = "DELETE FROM AccessDbase WHERE ..."
Else
    tableadapter.SelectCommand.CommandText = "SELECT...FROM SQLDbase"
    tableadapter.InsertCommand.CommandText = "INSERT INTO SQLDbase..."
    tableadapter.UpdateCommand.CommandText = "UPDATE SQLDbase SET ..."
    tableadapter.DeleteCommand.CommandText = "DELETE FROM SQLDbase WHERE ..."
End if