广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    dotnet下生成简单sql语句

    2018-04-16 10:58:12 次阅读 稿源:互联网
    广告

      static public void insert_sql(string tablename,Hashtable param_employeefield,string connstring)
        {
         //System.Web.HttpContext.Current.Response.Write("xxx");
         Hashtable ht_field=new Hashtable();
         ht_field=getfieldtype(tablename,connstring); //表的字段
         string field_value;
         string field_type;//字段类型
         string str_sql_fieldname="insert into " + "tablename("; //插入语句
         string str_sql_fieldvalue=" values(";
         string str_sql;
         foreach(object obj_param in param_employeefield)
         {
          field_type=ht_field[obj_param.ToString()].ToString();//获取 int型 or varchar型等等
          field_value=param_employeefield[obj_param].ToString();
          str_sql_fieldname+=param_employeefield[obj_param].ToString()+",";
          str_sql_fieldvalue+=judgetype(field_type,field_value)+",";
         }

         str_sql_fieldname=str_sql_fieldname.Substring(1,str_sql_fieldname.Length)+")";
         str_sql_fieldvalue=str_sql_fieldvalue.Substring(1,str_sql_fieldvalue.Length)+")";
         str_sql=str_sql_fieldname+str_sql_fieldvalue;
         nsn.core.SqlHelper.ExecuteNonQuery(connstring,CommandType.Text,str_sql);
        }

        static public void update_sql(string tablename,Hashtable param_employeefield,string connstring)
        {
         Hashtable ht_field=new Hashtable();
         ht_field=getfieldtype(tablename,connstring);
         string field_value;
         string field_type;
         StringBuilder str_sql  = new StringBuilder();  
         str_sql.Append("update " + "tablename set ");
         string sql1;
         foreach(object obj_param in param_employeefield)
         {
          field_type=ht_field[obj_param.ToString()].ToString();
          field_value=param_employeefield[obj_param].ToString();
          str_sql.Append(param_employeefield[obj_param].ToString()+"="+judgetype(field_type,field_value)+",");
         }
         sql1=str_sql.ToString().Substring(1,str_sql.ToString().Length-1)+" where";
         nsn.core.SqlHelper.ExecuteNonQuery(connstring,CommandType.Text,sql1);
        }

        static protected string judgetype(string field_type,string field_value)
        {
         string str_value;
         switch(field_type)
         {
          case "int":     str_value=field_value;
           break;
          case "varchar": str_value="'"+field_value+"'";
           break;
          case "ntext":   str_value="'"+field_value+"'";
           break;
          case "datetime":str_value="'"+field_value+"'";
           break;
          case "tinyint": str_value=field_value;
           break;
          case "smallint": str_value=field_value;
           break;
         }
         return(field_type);
        }

        static protected Hashtable getfieldtype(string tablename,string connstring)
        {
         DataSet ds = new DataSet();
         Hashtable ht_field=new Hashtable();
         SqlParameter[] paramsToStore = new SqlParameter[1];
         paramsToStore[0] = new SqlParameter("@tablename", SqlDbType.NVarChar);
         paramsToStore[0].Direction=ParameterDirection.Input;
         paramsToStore[0].Value=tablename;
         
         ds=nsn.core.SqlHelper.ExecuteDataset(connstring,CommandType.StoredProcedure,"main_searchtable",paramsToStore);
         DataTable tbl=ds.Tables[0];
         foreach(DataRow row in tbl.Rows)
         {
         
          ht_field.Add(row["字段名"].ToString(),row["类型"].ToString());
          //System.Web.HttpContext.Current.Response.Write(row["字段名"].ToString());
         }
         return(ht_field);
        }

      main_searchtable 存储过程是
      CREATE PROCEDURE main_searchtable
      @tablename nvarchar(50)
      AS 
       
      SELECT  
       表名=case when a.colorder=1 then d.name else '' end, 
       表说明=case when a.colorder=1 then isnull(f.value,'') else '' end, 
       字段序号=a.colorder, 
       字段名=a.name, 
       标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end, 
       类型=b.name 
       
        
      FROM syscolumns a 
       left join systypes b on a.xtype=b.xusertype 
       inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties' 
       
       left join sysproperties f on d.id=f.id and f.smallid=0 
       
      where d.name=@tablename    --如果只查询指定表,加上此条件 
      order by a.id,a.colorder
      GO

      http://liuxiaoyi666.cnblogs.com/archive/2006/05/28/411082.html
      

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告