2017-12-20 10 views
2

私はasp.netとSQLサーバーを使用してアンドロイドアプリケーション用のRestful API(JSONベースのAPI)を作成しました。私は、このリンクでRESTfulなWebサービスを介してSQL ServerデータベースへのAndroidアプリからCURD操作を行うことに成功しています:特定のDataTable行の残りの列に値を追加する方法は?

http://www.tutecentral.com/restful-api-for-android-part-1/

を今私が欲しいもの2以上の関連のために、単一のWebメソッドを作成することです選択したSQLクエリを実行して結果を単一のデータテーブルに追加します。つまり、2番目のクエリを実行する際に、データテーブル行の残りの列に値を追加します。しかし、私はそうしようとしている私のアプリケーションのクラッシュ:

Webサービスメソッド上記のシナリオについては、次のとおりです。

public DataTable GetStaffProfile(string userid) 
{ 
    String faculty_id=""; 
    DataTable staffProfile = new DataTable(); 

    //Adding data to these columns on executing 1st sql query 
    staffProfile.Columns.Add(new DataColumn("eid", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("empid", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("userid", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("fname", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("lname", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("fathername", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("dob", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("nationality", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("religion", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("cnic", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("gender", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("domicile", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("designame", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("dname", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("employmentdate", typeof(String))); 

//Adding data to these columns on executing 2nd sql query 
    staffProfile.Columns.Add(new DataColumn("qualification", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("university", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("majors", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("year", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("city", typeof(String))); 
    staffProfile.Columns.Add(new DataColumn("country", typeof(String))); 

    if (dbConnection.State.ToString() == "Closed") 
    { 
     dbConnection.Open(); 
    } 
    string query = "SELECT eid, empid, userid, fname,lname, fathername, dob, nationality, religion, cnic, gender, domicile,(select title from uw_designation where desigid=uw_employee.desigid) as designame,(select dname from uw_department where " 
     +"deptid=uw_employee.deptid) as dname, employmentdate FROM uw_employee where userid='"+userid+"'"; 
    SqlCommand command = new SqlCommand(query, dbConnection); 
    SqlDataReader reader = command.ExecuteReader(); 
    if (reader.HasRows) 
    { 
     while (reader.Read()) 
     { 
      faculty_id = reader["eid"] as string; 
      staffProfile.Rows.Add(reader["eid"], reader["empid"], reader["userid"], reader["fname"], reader["lname"], reader["fathername"], reader["dob"], reader["nationality"], 
       reader["religion"], reader["cnic"], reader["gender"], reader["domicile"], reader["designame"], reader["dname"], 
       reader["employmentdate"]); 
     } 
    } 
    reader.Close(); 


    //getting staff qualification 


    string query2 = "SELECT TOP(1) eid, qualification, university, majors, year,city,country " + 
        "FROM uw_employee_education where eid='"+faculty_id+"'"; 
    SqlCommand command2 = new SqlCommand(query2, dbConnection); 
    SqlDataReader reader1 = command2.ExecuteReader(); 
    if (reader1.HasRows) 
    { 
     while (reader1.Read()) 
     { 
      staffProfile.Rows[0]["qualification"]=reader1["qualification"] as string; 
      staffProfile.Rows[0]["university"] = reader1["university"]as string; 
      staffProfile.Rows[0]["majors"] = reader1["majors"] as string; 
      staffProfile.Rows[0]["year"] = reader1["year"] as string; 
      staffProfile.Rows[0]["city"] = reader1["city"] as string; 
      staffProfile.Rows[0]["country"] = reader1["country"] as string; 
     } 
    } 
    reader1.Close(); 

    dbConnection.Close(); 
    return staffProfile; 
} 

両方のクエリは、唯一の結果を返します。あらゆる種類の援助が評価されます。 ありがとうございます。

答えて

0

2番目のクエリで既存のSqlCommandを変更しようとしますか?

string query2 = "SELECT TOP(1) eid, qualification, university, majors, year,city,country " + 
       "FROM uw_employee_education where eid='" + faculty_id + "'"; 
command.CommandText = query2; 
SqlDataReader reader1 = command.ExecuteReader(); 

また、SQLクエリを作成する際にSQL注入を考慮してください。 SqlParameterを使用することをお勧めします。

関連する問題