使用System.Data.SQLite命名空间中的可用内容,并使用C#在执行数据库操作。但是,有一个问题似乎无法弄清。
如果我想创建一个在创建时动态命名的表,我认为这样做的方法是...
&
然后执行此操作...
command.CommandText = @"CREATE TABLE IF NOT EXISTS @tableName( ... )";
然后执行
command.Parameters.AddWithValue("@tableName", tableName);
但是正在发生的事情是,我得到一个名为“ @tableName”的新表,而不是将变量tableName设置为什么。
如何使它正常工作?
答案 0 :(得分:0)
您可以创建过程而不是内联查询吗?您可以在这样的存储过程中轻松管理。`CREATEPROCEDURE Dynamic_SP
@Table_Name sysname AS BEGIN
SET NOCOUNT ON;
DECLARE @DynamicSQL nvarchar(4000)
SET @DynamicSQL = N'SELECT * FROM ' + @Table_Name
EXECUTE sp_executesql @DynamicSQL END
答案 1 :(得分:0)
我解决此类问题的方式是尽可能简化。在这种情况下,简单的字符串替换可以轻松解决您的问题,而无需使用参数。
例如:
command.Text = $@"CREATE TABLE IF NOT EXISTS {tableName}( ... )";
或
command.Text = string.Format(@"CREATE TABLE IF NOT EXISTS {0}( ... )", tableName);