【问题标题】:How to assign 3 values into a single string如何将 3 个值分配到单个字符串中
【发布时间】:2013-07-25 06:28:12
【问题描述】:

我在赋值时遇到问题。

 string userlanguages = string.Empty;
        try
        {
            SqlCommand cmd = new SqlCommand("SELECT [s_langName] from [dbo].[tx_UserLanguages] WHERE [s_ID] ='" + Class1.EmployeeId + "'", objcon);
            if (objcon.State == ConnectionState.Closed) objcon.Open();
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            DataSet myDS = new DataSet();
            adp.Fill(myDS);
            userlanguages = myDS.Tables[0].Rows[0]["[s_langName]"].ToString();
        }
        catch (SqlException exc)
        {
            Response.Write(exc.Message);
        }
        finally
        {
            objcon.Close();
            Class1.langKnwn = userlanguages;
        }
    }

假设,这里的 myDs 包含三个值。那么我将如何将它们分配给单个字符串(在本例中为“用户语言”)。我在另一个页面中使用 Class1.langKnwn 来显示用户选择的语言(在很多情况下可能不止一种语言)。

请帮助我。

【问题讨论】:

    标签: c# asp.net dataset sqldataadapter


    【解决方案1】:

    类似的东西怎么样

    List<string> languages = new List<string>();
    for (int iRow = 0; iRow < myDS.Tables[0].Rows.Count; iRow++)
        languages.Add(myDS.Tables[0].Rows[iRow]["[s_langName]"].ToString());
    
    userlanguages = String.Join(",", languages);
    

    【讨论】:

      【解决方案2】:
              SqlCommand cmd = new SqlCommand("SELECT [s_langName] from [dbo].[tx_UserLanguages] WHERE [s_ID] ='" + Class1.EmployeeId + "'", objcon);
              if (objcon.State == ConnectionState.Closed) objcon.Open();
              SqlDataAdapter adp = new SqlDataAdapter(cmd);
              DataSet myDS = new DataSet();
              adp.Fill(myDS);
              for(int ndx=0;ndx<myDS.Tables[0].Rows.Count;ndx+=1)
               {
                   if(ndx==0)
                     {
                        userlanguages = myDS.Tables[0].Rows[ndx]["[s_langName]"].ToString();
                     }
                     else
                     {
                        userlanguages = userlanguages+","+ myDS.Tables[0].Rows[ndx]["[s_langName]"].ToString();
                     }
               }
      

      【讨论】:

        【解决方案3】:
        userlanguages = string.Join(",",  myDS.Tables[0].AsEnumerable()
                                              .Select(row => row.Field<string>("[s_langName]"))
                                              .ToArray());
        

        【讨论】:

          【解决方案4】:

          如果我正确理解您的问题,在您的情况下使用 SqlDataReader 可能是更好的选择。

          using (SqlConnection objcon= new SqlConnection(connectionString))
          {
              SqlCommand cmd = new SqlCommand("SELECT [s_langName] from [dbo].[tx_UserLanguages] WHERE [s_ID] = @id", objcon);
              cmd.Parameters.AddWithValue("@id", Class1.EmployeeId);
              connection.Open();
          
              SqlDataReader reader = cmd .ExecuteReader();
          
              string userlanguages = string.Empty;
              while (reader.Read())
              {
                  string str = reader.GetString(0);
                  userlanguages = String.Join(",", userlanguages);
              }
              reader.Close();
          }
          

          而且您应该始终使用parameterized queries。这种字符串连接对SQL Injection 攻击开放。

          【讨论】:

            【解决方案5】:

            试试这个

            使用using System.Text;命名空间

            然后在你的代码块中编写代码

             StringBuilder sb = new StringBuilder();
                    for (int iRow = 0; iRow < myDS.Tables[0].Rows.Count; iRow++)
                    {
                        sb.Append(myDS.Tables[0].Rows[iRow]["[s_langName]"].ToString());
                        sb.Append(",");
                    }
            

            // 获取最后的字符串 string myString = sb.ToString();

            myString= myString.Substring(0, myString.Length - 1);

            【讨论】:

            • 请注意,这将在最后加上一个额外的,
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-21
            • 1970-01-01
            • 1970-01-01
            • 2022-09-27
            • 1970-01-01
            相关资源
            最近更新 更多