字符串   string aa="a1,a2@,a3,a2@aa,ad,@dd,dc``````"类似这种格式的字符串以@为分隔符
怎样写一个insert 去循环插入数据到数据库里面······
数据库字段create table user
         (
             userName varchar(20),
             userAddress varchar(100)
          )插入后效果:
        userName       userAddress
          a1              a2
          a3              a2
          aa              ad
          dd              dc

解决方案 »

  1.   

    string[] bb=aa.split("@");
    for(int i=0;i<bb.length;i++)
    {
        string[] cc=bb.replace(","," ").split(" ");
        for(int j=0;j<cc.length;j++)
         {
             string sql="insert into tablename values("+cc[j][0]+","+cc[j][1];
             //插入操作
         }
    }
      

  2.   

    string[] bb=aa.split("@");
    for(int i=0;i<bb.length;i++)
    {
        string[] cc=bb.replace(","," ").split(" ");
        for(int j=0;j<cc.length;j++)
         {
             string sql="insert into tablename values("+cc[j][0]+","+cc[j][1]+");";
             //插入操作
         }
    }
      

  3.   


    //对于这种应该采用批量方法。如下代码应该比较简洁些
    string strBatchInsert = "";
    string strInsert = "INSERT INTO TableName VALUES({1},{2});";
    string[] bb=aa.split("@");foreach (string str in bb)
    {
        if (str.Trim() != "")
        {
            strBatchInsert += string.Format(strInsert, str.Split(','));
        }
    }//这里做批量插入strBatchInsert
      

  4.   

    最简单的是
    string strInsert = "INSERT INTO TableName(Field1,Field2)"; strInsert += "select "
    strInsert +=aa.replace("@,","union all select ");
    当然这里面还需要根据sql语句一些进行处理最终的sql语句类似于如下就行insert into Tablename(Field1,Field2)
    select 'aa','bb'
    union all 
    select 'aa1','bb1',
      

  5.   


    ===========
    修改一下,利用stringbuilder 的append()方法连接字符串效率比string的+= 拼接好的多,把foreach换成for循环,就搞定了。
      

  6.   

    在数据库中写一个分隔字符的函数。。ALTER FUNCTION [dbo].[F_StringSplit]
    (
    @inputString nvarchar(4000),
    @splitChar nvarchar(10)
    )
    RETURNS @re   TABLE(Col   varchar(100))   
    AS
    BEGIN  
    DECLARE   @splitlen   int  
    SET   @splitlen=LEN(@splitChar+'a')-2  
    WHILE   CHARINDEX(@splitChar,@inputString)>0  
    BEGIN  
    INSERT   @re   VALUES(LEFT(@inputString,CHARINDEX(@splitChar,@inputString)-1))  
    SET   @inputString=STUFF(@inputString,1,CHARINDEX(@splitChar,@inputString)+@splitlen,'')  
    END  
    INSERT   @re   VALUES(@inputString)  
    RETURN  
    END insert into Table(XX,XX,...)
      select @T,col from dbo.F_StringSplit(@string,',')