public static DataTable SearchFor(string strKey)
    {
        objConn.Open();
        string[] keyStrings;
        string tempString = " ";
        char[] temp = tempString.ToCharArray();
        string enterTemp = strKey;
         keyStrings = enterTemp.Split(temp);
        //循环读取关键字并输出
        DataTable objDataTable = null;
        foreach (string keyString in keyStrings)
        { 
            string strComm = "SELECT ...";
            SqlDataAdapter objComm = new SqlDataAdapter(strComm, objConn);
            DataSet objDS = new DataSet();
            objComm.Fill(objDS, "article");            if (objDS.Tables["article"].Rows.Count > 0)
            {
                objDataTable = objDS.Tables["article"];
            }.
        }
        return objDataTable;
        objConn.Close();
    }
----------------------------------------------------
现在搜到的结果只能是包含最后一个关键字的数据,
怎么才能对返回的数据做个累加,好能把包含全部关键字的数据都列出来呢?

解决方案 »

  1.   

    把关键字弄成如下形式'test1','test2','test3','test4'
    然后在SQL语句中IN一下就好了
      

  2.   

    把关键字循环输出到数组,再将数组转成SQL识别的字符串
     string[] ID = new string[a.Length];
                if (a.Length > 0)
                {
                    for (int i = 0; i < a.Length; i++)
                    {
                        ID[i] = a[i].Substring(0, 4);                   
                    }  
    string id= "";
                for (int i = 0; i < a.Length; i++)
                {
                    id += ID[i] + ',';
                 }
    在写SQL的时候 ----  WHERE id IN ("+id+")
      

  3.   

    更正下SQL语句
    WHERE id IN ("+id.TrimEnd(',')+")
      

  4.   

    a[i].Substring(0, 4);                   
    ----------------------------
    这是在干吗?
      

  5.   

    不好意思,这是我自己的一段程,直接截了,没修就发上来了
    直接  
    string[] ID = new string[a.Length];
    string id= "";
       if (a.Length > 0)
      {
                for (int i = 0; i < a.Length; i++)
                {
                    id += ID[i] + ',';
                 }
      }
    这样就可以
    因为我之前的数组是多维,需要拆分,所以用substring
      

  6.   

    if (a.Length > 0)
                {
                    for (int i = 0; i < a.Length; i++)
                    {
                        ID[i] = a[i];                   
                    }
      

  7.   

    把ID[i]
    直接替换成a[i]就成了
      

  8.   

    where 列名 in(关键字枚举)
    关键字枚举:"text1","text2",...
    大致意思是 列名='text1' or 列名="text2" ...
      

  9.   

    改为:where 列名 in(关键字枚举)后数据库报错:
    数据类型 ntext 和 varchar 在 equal to 运算符中不兼容查询列有ntext型,是因为要存储足够长度的字符.这样报错只能改 数据类型了吗?
      

  10.   

    like 和 in 能一起出现吗 ?
      

  11.   

    like 和in 是不可以在一起的!
    like是模糊查询,后面接的是匹配的字符串.如果用like接 in(string)那是什么也不会查得出来的