SQL查询中的.Net动态表名?

时间:2014-04-18 08:56:25

标签: mysql sql .net

如何在下面的SQL查询中使用动态表名?

"INSERT INTO `tableName` (`ADUC`, `DHCP`, `DISK`, `DNS`, `Exchange`, `HOSTNAME`, `HWID`, `IP`, `OS`) values (@aduc,@dhcp,@disk,@dns,@exchange,@hostname,@hwid,@ip,@os)"

目前我通过

宣布tableName
Dim tableName = My.Computer.Name.ToString

我希望表名反映计算机名称,因为我在PhpMyAdmin中创建了这个名称,所以有关如何执行此操作的信息吗?

请注意``需要保留在表名的任何一侧,以支持查询中带连字符的表名。

2 个答案:

答案 0 :(得分:2)

"INSERT INTO `"+tableName+"` (`ADUC`, `DHCP`, `DISK`, `DNS`, `Exchange`, `HOSTNAME`, `HWID`, `IP`, `OS`) values (@aduc,@dhcp,@disk,@dns,@exchange,@hostname,@hwid,@ip,@os)"

答案 1 :(得分:0)

您可以创建如下所示的存储过程,并将tablename和values作为参数传递,因为您已经知道了表模式。

create table dynamictest

create table dynamictest(id varchar(max));

现在您需要插入值,但表名是动态的,因此您需要传递它。

create PROCEDURE [dbo].[mssql_DynamicTableTest]
@LogTable VARCHAR(1024),
@code NVARCHAR(Max)


AS
BEGIN

DECLARE 

    @sql    NVARCHAR(MAX),
    @params NVARCHAR(Max);

SET @params = N'@LogTable VARCHAR(1024),@code NVARCHAR(Max)';

 SET @sql = N'INSERT INTO '+@LogTable+' VALUES ('''+@code+''')';
 select @sql;


  EXEC sp_executesql @sql, @params, @LogTable,@code;



END

现在通过传递表名" dynamictest"来执行能够存储过程。和价值"测试"。