SqlCommand cmd = new SqlCommand(); for (int i = 0;i<1000;i++) { string sqlstr = "ALTER TABLE yourTableName\r\n"+"ADD "+ "data"+i+" "+"yourdatatype "+"NULL" cmd.CommandText = sqlstr; cmd.Connection = yourConnection; cmd.ExecuteNonQuery(); }没测试,你试试看
打开你的查询分析器,在里面运行下面的Sql语句------------------------------------------------------------------- EXEC sp_configure 'allow updates',1 reconfigure with override GO--插入的列名 DECLARE @strColName VARCHAR(10)--循环次数 DECLARE @intLoopCount int SET @intLoopCount=1--更改表的语句 DECLARE @SqlScript VARCHAR(255) SET @SqlScript='ALTER TABLE YourTableName ADD ' --将这里的YourTableName换成你的表名--循环构造SQL语句 WHILE @intLoopCount<=1000 BEGIN -- 得到列名(data1,data2....) SET @strColName='data'+ CAST(@intLoopCount AS VARCHAR(5)) -- 构造SQL语句 SET @SqlScript=@SqlScript+@strColName+' smallint null,' SET @intLoopCount=@intLoopCount+1 END--去掉SQL语句的最后一个',' SET @SqlScript=SUBSTRING(@SqlScript,0,LEN(@SqlScript))--print @SqlScript -- 执行该语句更改表 EXEC(@SqlScript)GO EXEC sp_configure 'allow updates',0 reconfigure with override--------------------------------------------------------你的这个表够大,千多列,真正管理起来你就知道多麻烦了,
不要写了,这种表设计出来也是垃圾!!不能报表改了么? 夹一个Flag字段来区分? 全部是 smallint, null,Flag,Value Flag = 1 : Value = data1 Flag = 2 : Value = data2 Flag = 3 : Value = data3 Flag = 4 : Value = data4??为什么不这样设计!!!!??? ???????????1000列的表,维护,效率,都无从谈起。
for(int i=0;i<=1000;i++)
{
sql += "data" + i.ToString() + " smallint,";
}
sql += ")"然后把sql输出,复制到查询分析器里面执行就可以
==============================================
嘿嘿,这时说我呢
是这样的,当一个事件发生时,需要记录前后共1000个数据,以及事件的时间,点号等。有什么更好的办法吗?
for (int i = 0;i<1000;i++)
{
string sqlstr = "ALTER TABLE yourTableName\r\n"+"ADD "+ "data"+i+" "+"yourdatatype "+"NULL"
cmd.CommandText = sqlstr;
cmd.Connection = yourConnection;
cmd.ExecuteNonQuery();
}没测试,你试试看
EXEC sp_configure 'allow updates',1 reconfigure with override
GO--插入的列名
DECLARE @strColName VARCHAR(10)--循环次数
DECLARE @intLoopCount int
SET @intLoopCount=1--更改表的语句
DECLARE @SqlScript VARCHAR(255)
SET @SqlScript='ALTER TABLE YourTableName ADD ' --将这里的YourTableName换成你的表名--循环构造SQL语句
WHILE @intLoopCount<=1000
BEGIN
-- 得到列名(data1,data2....)
SET @strColName='data'+ CAST(@intLoopCount AS VARCHAR(5)) -- 构造SQL语句
SET @SqlScript=@SqlScript+@strColName+' smallint null,' SET @intLoopCount=@intLoopCount+1
END--去掉SQL语句的最后一个','
SET @SqlScript=SUBSTRING(@SqlScript,0,LEN(@SqlScript))--print @SqlScript
-- 执行该语句更改表
EXEC(@SqlScript)GO
EXEC sp_configure 'allow updates',0 reconfigure with override--------------------------------------------------------你的这个表够大,千多列,真正管理起来你就知道多麻烦了,
夹一个Flag字段来区分?
全部是 smallint, null,Flag,Value
Flag = 1 : Value = data1
Flag = 2 : Value = data2
Flag = 3 : Value = data3
Flag = 4 : Value = data4??为什么不这样设计!!!!???
???????????1000列的表,维护,效率,都无从谈起。