首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 高分求解!!sql字段用变量替代!! [已结贴,结贴人:aspnet30]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:09:26 楼主
    如:

    sub insert(n as 一群字段变量,如何用一个变量替代)
    insert into 表名(n)value (c)

    我是想可以随意增加字段而不需要改代码,调用外部一个配置字段的文件即可!!
    80  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jinjazz
    • 等级:
    发表于:2008-05-09 16:15:021楼 得分:5
    最好用xml来配置,这样兼容性和安全性都比传字符串拼接sql语句好。直接拼接会被sql注入的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:16:222楼 得分:2
    没看明白
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:21:223楼 得分:0
    引用 2 楼 JL99000 的回复:
    没看明白 

    如:

    VB.NET code
    sub insert(title,content,time) ..insert into 表 (title,content,time) values ('"&title&"','"&content&"','"&time&"') ens sub 我想将其中的title,content,time可随意更改,用成一个变量(如该变量从配置文件中读)


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:22:214楼 得分:2
    引用 2 楼 JL99000 的回复:
    没看明白

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:24:335楼 得分:5
    SQL code
    create table test ( column1 int, column2 int, column3 int ) declare @sql nvarchar(max) set @sql='column1,column2,column3' exec ('select '+@sql+' from test')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:26:456楼 得分:5
    根据你外部配置文件,写一个方法读取字段名,然后把n变成字符串,如"字段一,字段二,。。。"

    一个方法读值 返回字符串c为"值一,值二,。。。" 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hy_lihuan
    • 等级:
    发表于:2008-05-09 16:28:307楼 得分:5
    基本的sql定义参数就可以,不过需要放在存储过程中来实现
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:30:508楼 得分:5
    引用 3 楼 aspnet30 的回复:
    引用 2 楼 JL99000 的回复:
    没看明白  
     
    如: 


    VB.NET code
    sub insert(title,content,time)

    ..insert into 表 (title,content,time) values ('"&title&"','"&content&"','"&time&"')
    ens sub
    我想将其中的title,content,time可随意更改,用成一个变量(如该变量从配置文件中读)

    string cols = "title,content,time";
     cols +=",xxx";
    string sql = "insert into 表 ("+ cols +") values ..."
    拼是能拼..不过得小心点.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:31:349楼 得分:8
    你可以这样啊,定义个varchar(1000)的@sql
    @sql ='select '+@parm+' from table where'+@parmWhere
    然后 exec @sql
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:36:4510楼 得分:0
    引用 6 楼 phper2008 的回复:
    根据你外部配置文件,写一个方法读取字段名,然后把n变成字符串,如"字段一,字段二,。。。" 

    一个方法读值 返回字符串c为"值一,值二,。。。" 


    在values中不好读啊,如values("& n &")
    这个时候,n中的不好代表一群变量
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:38:2111楼 得分:5
    可以考虑,hashtable或idirectory配合,commendbuilder,实现
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    发表于:2008-05-09 16:39:4512楼 得分:5
    拼字符串

    定义的变量都为string 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:41:2413楼 得分:2
    定义varchar(1000)的@sql 
    @sql ='select '+@parm+' from table where'+@parmWhere 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandy945
    • 等级:
    发表于:2008-05-09 16:43:2414楼 得分:2
    C# code
    //用一些键值的范型集合,键为对应的字段,值为拼接的形式,可能各个键的拼接形式不一样
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • raul_qu
    • 等级:
    发表于:2008-05-09 16:47:2815楼 得分:5
    把整个sql语句定义为变量,然后exec

    declare @sqlstr varchar(1024);
    set @sqlstr = 'insert into tab(' + @field1 + ',' + @field2 + ',' + ......')';
    exec @sqlstr
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:50:5616楼 得分:8
    引用楼主 aspnet30 的帖子:
    如: 

    sub insert(n as 一群字段变量,如何用一个变量替代) 
    insert into 表名(n)value (c) 

    我是想可以随意增加字段而不需要改代码,调用外部一个配置字段的文件即可!!


    那你就用sqlParameter[] sqlp,用一个参数的数组来存放这些字段。
    这总可以吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:51:5317楼 得分:0
    拼字符串不行啊

    values后面如何识别为一群变量,他会读成一个字符串啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 16:52:4518楼 得分:0
    引用 16 楼 kakajya 的回复:
    引用楼主 aspnet30 的帖子:
    如:  

    sub insert(n as 一群字段变量,如何用一个变量替代)  
    insert into 表名(n)value (c)  

    我是想可以随意增加字段而不需要改代码,调用外部一个配置字段的文件即可!! 
     

    那你就用sqlParameter[] sqlp,用一个参数的数组来存放这些字段。 
    这总可以吧。 


    我是想用这个,但不知道怎么用。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:07:1919楼 得分:2
    学習

    OracleParameter param = new OracleParameter(paramName, value ?? DBNull.Value);
    param.Direction = ParameterDirection.Input;
    param.SourceColumn = sourceName;
    command.Parameters.Add(param);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:27:3820楼 得分:5
    写个方法:
    public static Insert(string[] fields,object[] paras)
    {
      string insertCommandText="insert into "+tableName+"("+这里用个方法解析fields数组+") values("+调一个方法解析paras数组+")";
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:28:5921楼 得分:2
    刚刚的方法忘记写返回值了,请根据需要自己设一个合适的返回值。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 17:50:0822楼 得分:2
    不知道arraylist能不能满足你的需要,用它可以随意的增加列名,判断列名是否存在,移除特定的列名,根据已知的列名来查找它的位置并重新赋值
    操作完以后把里面的内容写入一个全局的string变量

    ArrayList alist = new ArrayList();
                alist.Add("a");
                alist.Add("b");
                alist.Add("c");           
                alist.Remove();
                alist.Contains();
                alist.IndexOf();
                for (int i = 0; i  < alist.Count; i++)
                {
                    s += alist[i] + ",";
                }
                s = s.Substring(0, s.LastIndexOf(','));
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • redbb
    • 等级:
    发表于:2008-05-09 18:24:5723楼 得分:5
    或者 sp_executesql
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 18:28:3524楼 得分:0
    引用 20 楼 davidxu1969 的回复:
    写个方法: 
    public static Insert(string[] fields,object[] paras) 

      string insertCommandText="insert into "+tableName+"("+这里用个方法解析fields数组+") values("+调一个方法解析paras数组+")"; 
    }


    fields数组好办,paras数组怎么解析
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 20:15:0425楼 得分:0
    好的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 10:56:5826楼 得分:0
    Mark!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 15:46:4827楼 得分:0
    用参数来替代呀
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved