2017-06-13 64 views
0

我想選擇使用c#的表列屬性。我寫了這段代碼。我的查詢正在處理sqlserver。但我不會在C#中獲得最大長度。C#選擇Transact-SQL(表列屬性)

我的查詢是這裏

//TableName:Contents, ColumnName : Title 
select Col_Length('Contents','Title') as columnLengthh 

結果是在這裏:

enter image description here

我的C#代碼這裏:

string columnLength = "select Col_Length('Contents','Title') as columnLengthh"; 
        adapter = new SqlDataAdapter(columnLength, connection); 
        dataSet = new DataSet(); 
        adapter.Fill(dataSet); 
        DataTable dataTable2 = dataSet.Tables[0]; 
        foreach (DataRow row in dataTable2.Rows) 
        { 
         var x = row["columnLengthh"].ToString(); 
        } 

結果(x = -1)

如何在c#中獲得長度。

請幫忙!

+0

你的語句返回一個值,你不應該使用適配器/數據集,而只需調用command.ExecuteScalar() –

+0

檢查您的連接。除了創建Dataset和DataTable的不必要開銷外,我在代碼中看到沒有錯誤。 -1是COLLENGTH()值的合法值:對於使用最大說明符('varchar(max)')聲明的varchar類型的列,「COL_LENGTH」返回值-1。 – Serg

回答

2

檢查你的查詢是否正確

更改ConnectionString,以匹配你所擁有的 - 例如:

string connectionString = @"server=localhost\mysqlserver;database=master;Trusted_Connection=True;"; 

,並使用下面的代碼:

 string queryString = "select Col_Length('Contents','Title') as columnLengthh"; 
     string connectionString = @"your con string"; 
     SqlConnection connection = null; 
     try 
     { 
      connection = new SqlConnection(connectionString); 

      using (SqlCommand command = new SqlCommand(queryString, connection)) 
      { 
       connection.Open(); 
       var result = command.ExecuteScalar(); 
       Console.WriteLine("columnLengthh = {0}", result); 
      } 
     } 
     catch (Exception ex) 
     { 
      ex.ToString(); 
     } 
     finally 
     { 
      connection.Close(); 
     } 
+0

謝謝。 ) –

+0

沒有問題,祝你好運,隨時提問 – SCramphorn

1

只需使用SqlConnection,SqlCommand,SqlReader等類與SQL Server進行通信。

string queryString = "select Col_Length('Contents','Title') as columnLengthh"; 
string connectionString = "Your connection string"; 
SqlConnection connection = null; 
try 
{ 
    connection = new SqlConnection(connectionString) 
    using (SqlCommand command = new SqlCommand(queryString, connection)) ; 
    { 
     connection.Open(); 
     var result = command.ExecuteScalar(); 
     Console.WriteLine("columnLengthh = {0}", result); 
    } 
} 
finally 
{ 
    connection.Close(); 
} 
+0

這也應該處置命令對象。此外,讀者不使用。 – stuartd

+0

@stuartd謝謝。我糾正了它。對於讀者而言,它並不使用讀者對象。 –

+0

您仍然留在對ExecuteReader的調用中,這意味着對ExecuteScalar的調用將不起作用! – stuartd