2015-11-18 53 views
2

我想從MySQL數據庫中獲取數據列說,我有多行數據的特定列,我需要包括每一行取回後的昏迷。每次獲取後取回Mysma數據與昏迷C#Mysql

這是給數據前,當我試圖

添加代碼 Response.Write(name.Split(','));

System.String[]System.String[]System.String[]System.String[]System.String[]System.String[]System.String[]System.String[]System.String[]System.String[]System.String[] 

我的DB

Phone_Number    School_id 

1        SC1 
2        SC1 
3        SC1 
4        SC1 

期望輸出

1,2,3,4 

電流輸出增加昏迷3210

我取查詢

string constr = ConfigurationManager.ConnectionStrings["Logging"].ConnectionString; 


       using (MySqlConnection con = new MySqlConnection(constr)) 
       { 

        using (MySqlCommand MySqlCommand = new MySqlCommand("SELECT Phone_Number FROM Login where SchoolId='" + SessionManager.SchoolId + "'", con)) 
        { 
         MySqlCommand.CommandType = CommandType.Text; 
         con.Open(); 
         MySqlDataReader MySqlDataReader = MySqlCommand.ExecuteReader(); 
         while (MySqlDataReader.Read()) 
         { 

          string name = MySqlDataReader["FatherFullName"].ToString(); 

          Response.Write(name.Split(',')); 


         } 
         con.Close(); 
        } 
       } 

回答

1

String.Split方法拆分有特殊字符或字符串的字符串。這不是你想要的。

您可以將Phone_Number值添加到List<string>,並且可以使用string.Join(string, IEnumerable<String>) method生成逗號分隔值。

var list = new List<string>(); 
while(MySqlDataReader.Read()) 
{ 
    string name = MySqlDataReader["FatherFullName"].ToString(); 
    if(!string.IsNullOrEmpty(name)) 
    { 
     list.Add(name); 
    } 
} 
Response.Write(string.Join(",", list)); // 1,2,3,4 

你應該總是使用parameterized queries的方式。這種字符串連接對於SQL Injection攻擊是開放的。

還有兩件事;

  • 默認值CommandTypeText。你不需要需要明確地分配它。
  • 您無需關閉與con.Close()的連接。由於您使用了using聲明,因此會自動執行此操作。
+0

謝謝完全一樣,我期待現在我有一個更多的問題,我認爲你可以整理出來的問題是說,如果有一個空白或空ENTRE返回',,,,,,,'這樣的 – Shaik

+0

@Shaik你可以用['string.IsNullOrEmpty'](https://msdn.microsoft.com/en-us/library/system)檢查你的字符串。string.isnullorempty.aspx)然後。更新我的答案,看看。 –

+0

對不起,如果我想避免一些文本,如默認情況下保存在數據庫像'XXXXXXXXXXXXX'那麼我應該怎麼做,如果(!string.IsNullOrEmpty(名稱)&&!字符串。) – Shaik

1

String.Split用於

分割字符串分解成字符串數組中的子

您可以使用String.Join這樣的: -

//define a list of string 
List<string> phoneNumbers = new List<string>(); 
while (MySqlDataReader.Read()) 
{ 
    //add all the phone numbers to the list 
    string phoneNum = MySqlDataReader["FatherFullName"].ToString(); 
    if(!String.IsNullOrEmpty(phoneNum)) 
     phoneNumbers.Add(phoneNum); 
} 
//finally use Join method to get expected result 
Response.Write(String.Join(",",phoneNumbers)); 

而且,請注意您的查詢是打開的SQL Injection attack,你應該考慮使用p而不是aramaterized查詢。

0

旁邊的分割/結合,也可以從MySQL直接得到結果:

SELECT GROUP_CONCAT(Phone_Number) FROM Login WHERE SchoolId = 'id'; 

這將返回1條單行所有的電話號碼,用逗號分隔。