簡體   English   中英

如何將3個值分配到單個字符串中

[英]How to assign 3 values into a single string

我有分配值的問題。

 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包含三個值。 然后我將如何將它們分配給單個字符串(在本例中為“userlanguages”)。 我在另一個頁面中使用Class1.langKnwn來顯示用戶選擇的語言(在許多情況下可能超過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);
        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();
               }
         }

如果我正確理解您的問題,在您的情況下使用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();
}

您應該始終使用參數化查詢 這種字符串連接對SQL注入攻擊是開放的。

嘗試這個

使用using System.Text; namesapce

然后在您的塊中寫入該代碼

 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();獲取string myString = sb.ToString();

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

userlanguages = string.Join(",",  myDS.Tables[0].AsEnumerable()
                                      .Select(row => row.Field<string>("[s_langName]"))
                                      .ToArray());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM