2011-07-12 34 views
0

我正在使用dbf數據庫。我需要查詢它以字符串格式獲取信息。 DBF文件被設置如下:在c中獲取作爲字符串返回的數據庫查詢#

Student Name Student Number Student Description 
HelloWorld  123456789   Present 
WorldHello  987654321   Absent 

這裏是我的代碼至今:

OleDbCommand command; 
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + dbfPath + ";Extended Properties=dBase III"); 
    command = new OleDbCommand("SELECT STUDENTNAME, STUDENTNUMBER, STUDENTDESCRIPTION" + " FROM " + DbfFile + " WHERE " + STUDENTNAME='HelloWorld', conn); 

現在我想要得到的結果作爲逗號分隔字符串如下:

HelloWorld,123456789,Present

我該怎麼做?

回答

0

使用DataReader(如解釋here)獲取的結果,將結果連接:

using (var reader = command.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     string line = string.Format(
          "{0},{1},{2}", 
          reader["STUDENTNAME"], 
          reader["STUDENTNUMBER"], 
          reader["STUDENTDESCRIPTION"]); 

     ... 
    } 
} 
0

有幾種方法 - 最直接的也可能是最不理想的一個是修改SQL:

command = new OleDbCommand("SELECT STUDENTNAME + ',' + STUDENTNUMBER + ',' ... 
+0

這將返回null如果任何字段爲空。 –

1

有2個選擇.. 1 - 創建一個DataReader

myCommand.ExecuteReader (CommandBehavior.CloseConnection); 
    string result; 
    while (myReader.Read ()) { 
     result = string.format("{0},{1},{2}"),myReader.GetString(0),myReader.GetString(1),myReader.GetString(2)); 
    } 
    myReader.Close (); 
    myConn.Close (); 

2 - 修改SQL語句

command = new OleDbCommand("SELECT STUDENTNAME + ',' STUDENTNUMBER + ',' + STUDENTDESCRIPTION" + " FROM " + DbfFile + " WHERE " + STUDENTNAME='HelloWorld', conn); 
string result = (string)command.ExecuteScalar(); 
+0

是否所有字段都是字符串 - 因爲選項1會失敗,如果是這樣?選項2將在任何字段爲空的情況下返回null。 –

0

使用LINQ .... using System.Linq

string result; 
var reader=command.CreateReader(); 
if (reader.Read()) { 
    result=String.Join(",",Enumerable.Range(0,reader.FieldCount).Select(x=>reader.IsDbNull(x) ? String.Empty : reader[x].ToString()).ToArray()); 
} 

結果將是沒有記錄或者你想

0

我會用一個null值OleDbDataReader,字符串:

using (OleDbConnection connection = new OleDbConnection(connectionString)) 

    { 
     OleDbCommand command = new OleDbCommand(queryString, connection); 
     connection.Open(); 
     OleDbDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
      // put your logic here to concatenate the strings 
      Console.WriteLine(string.Format("{0},{1},{2}", 
        reader["STUDENTNAME"], 
        reader["STUDENTNUMBER"], 
        reader["STUDENTDESCRIPTION"]);  
     } 
     reader.Close(); 
    } 

希望這有助於,

約翰

相關問題