2010-12-08 34 views
0

我有这样转换数据表到字符串类型

 public DataTable GetAllPrimaryKeyTables(string localServer, string userName, string password, string selectedDatabase) 
      { 

       // Create the datatable 
       DataTable dtListOfPrimaryKeyTables = new DataTable("tableNames"); 

       SqlConnectionStringBuilder objConnectionString = new SqlConnectionStringBuilder(); 
       objConnectionString.DataSource = localServer; ; 
       objConnectionString.UserID = userName; 
       objConnectionString.Password = password; 
       objConnectionString.InitialCatalog = selectedDatabase; 

       // Query to select primary key tables. 
       string selectPrimaryKeyTables = @"SELECT 
                 TABLE_NAME 
                 AS 
                 TABLES 
                FROM 
                 INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
                WHERE 
                 CONSTRAINT_TYPE = 'PRIMARY KEY' 
                AND 
                 TABLE_NAME <> 'dtProperties' 
               ORDER BY 
                 TABLE_NAME"; 

       // put your SqlConnection and SqlCommand into using blocks! 
       using(SqlConnection sConnection = new SqlConnection(objConnectionString.ConnectionString)) 
       using(SqlCommand sCommand = new SqlCommand(selectPrimaryKeyTables, sConnection)) 
       { 
        try 
        { 
         // Create the dataadapter object 
         SqlDataAdapter sDataAdapter = new SqlDataAdapter(selectPrimaryKeyTables, sConnection); 

         // Fill the datatable - no need to open the connection, the SqlDataAdapter will do that all by itself 
         // (and also close it again after it is done) 
         sDataAdapter.Fill(dtListOfPrimaryKeyTables); 
        } 
        catch(Exception ex) 
        { 
         //All the exceptions are handled and written in the EventLog. 
         EventLog log = new EventLog("Application"); 
         log.Source = "MFDBAnalyser"; 
         log.WriteEntry(ex.Message); 
        } 
       } 

       // return the data table to the caller 
       return dtListOfPrimaryKeyTables; 



      } 

一个函数,那么我希望得到的返回类型为字符串,而不是数据表,所以我做了这个..

public string GetAllPrimaryKeyTables(string ConnectionString) 
     { 
      string result = string.Empty; 

      // Query to select primary key tables. 
      string selectPrimaryKeyTables = @"SELECT 
                TABLE_NAME 
                AS 
                TABLES 
               FROM 
                INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
               WHERE 
                CONSTRAINT_TYPE = 'PRIMARY KEY' 
               AND 
                TABLE_NAME <> 'dtProperties' 
              ORDER BY 
                TABLE_NAME"; 

      // put your SqlConnection and SqlCommand into using blocks! 
      using(SqlConnection sConnection = new SqlConnection(ConnectionString)) 
      using(SqlCommand sCommand = new SqlCommand(selectPrimaryKeyTables, sConnection)) 
      { 
       try 
       { 
        // Create the dataadapter object 
        SqlDataAdapter sDataAdapter = new SqlDataAdapter(selectPrimaryKeyTables, sConnection); 
        DataTable dtListOfPrimaryKeyTables = new DataTable("tableNames"); 

        // Fill the datatable - no need to open the connection, the SqlDataAdapter will do that all by itself 
        // (and also close it again after it is done) 
        sDataAdapter.Fill(dtListOfPrimaryKeyTables); 
        using(StringWriter sw = new StringWriter()) 
        { 
         dtListOfPrimaryKeyTables.WriteXml(sw); 
         result = sw.ToString(); 
        } 
       } 
       catch(Exception ex) 
       { 
        //All the exceptions are handled and written in the EventLog. 
        EventLog log = new EventLog("Application"); 
        log.Source = "MFDBAnalyser"; 
        log.WriteEntry(ex.Message); 
       } 
      } 

      // return the data table to the caller 
      return result; 
     } 

但这是不是返回它应该的字符串...

你可以指示我需要修改的点。

+0

我更正了格式化......更明显的是,有两段代码(前后) – 2010-12-08 10:59:49

回答

0

而不是StringWriter,使用StringBuilder,那么你可以使用WriteWriteLine方法。

0

如果你想要一个逗号分隔列表,你可以使用类似下面的东西。

private string GetList(ds) 
{ 
    var result = string.Empty; 
    for(int i = 0; i < ds.Rows.Count; i++) 
    { 
     result += ds.Row[i][0] + ","; 
    } 
    result = result.Trim(','); 
    return result; 
} 

希望这会有所帮助。

相关问题