2016-09-19 15 views
0

コード内にcmdd(@PermissionAccessoageID)の値を取得し、それをどのように達成したいのですか。C言語のwhere句の特定の値を取得する

私はこのエラー

型「System.ArgumentExceptionの」の例外が発生したのSystem.Data.dllではなく、ユーザーコード

追加情報に処理されなかった得る

:マッピングは、オブジェクト型から存在していませんSystem.Data.SqlClient.SqlCommandを既知の管理プロバイダーのネイティブタイプに変換します。

マイコード:

protected void Add_Click(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.AddRange(new DataColumn[1] { new DataColumn("Pages") }); 

    foreach (GridViewRow row in addGridView.Rows) 
    { 
     if (row.RowType == DataControlRowType.DataRow) 
     { 
      CheckBox chkRow = (row.Cells[1].FindControl("chkboxaddView") as CheckBox); 
      CheckBox chkRow1 = (row.Cells[2].FindControl("chkboxaddEdit") as CheckBox); 
      string aaa = row.Cells[0].Text; 

      if (chkRow.Checked) 
      { 
       con.Open(); 
       var vaala = chkRow.Checked ? 1 : 0; 
       var vaalaa = chkRow1.Checked ? 1 : 0; 
       var val = chkaddisactive.Checked ? 1 : 0; 
       var vall = chkboxisactive.Checked ? 1 : 0; 
       string sqlcmd = "select AccesspageID From AccessPages where pages='" + row.Cells[0].Text + "'"; 

       SqlCommand cmdd = new SqlCommand(sqlcmd, con); 
       cmdd.CommandType = CommandType.Text; 
       cmdd.ExecuteScalar(); 

       string query = "add3tables";   //Stored procedure name 
       SqlCommand com = new SqlCommand(query, con); //creating SqlCommand object 
       com.CommandType = CommandType.StoredProcedure; //here we declaring command type as stored procedure 

       // adding parameters to SqlCommand below 
       com.Parameters.AddWithValue("@Name", txtaddrolename.Text.ToString()); 
       string unique_string = Guid.NewGuid().ToString(); 
       com.Parameters.AddWithValue("@RoleID ", unique_string); 
       com.Parameters.AddWithValue("@IsActive ", val); 
       com.Parameters.AddWithValue("@PermissionRoleID ", unique_string); 
       com.Parameters.AddWithValue("@View ", vaala); 
       com.Parameters.AddWithValue("@Edit ", vaalaa); 
       com.Parameters.AddWithValue("@PermissionAccessoageID ", cmdd); 

       com.ExecuteNonQuery(); 
       con.Close(); 
      } 

      if (chkRow1.Checked == false) 
      { 
       var vaala = chkRow.Checked ? 1 : 0; 
       var vaalaa = chkRow1.Checked ? 1 : 0; 
       var val = chkaddisactive.Checked ? 1 : 0; 
       var vall = chkboxisactive.Checked ? 1 : 0; 

       SqlCommand cmdd = new SqlCommand("select AccesspageID From AccessPages where pages='" + aaa + "'", con); 
       con.Open(); 

       cmdd.CommandType = CommandType.Text; 
       string query = "add3tables";   //Stored procedure name 
       SqlCommand com = new SqlCommand(query, con); //creating SqlCommand object 
       com.CommandType = CommandType.StoredProcedure; //here we declaring command type as stored procedure 

       // adding parameters to SqlCommand below 
       com.Parameters.AddWithValue("@Name", txtaddrolename.Text.ToString()); 
       string unique_string = Guid.NewGuid().ToString(); 
       com.Parameters.AddWithValue("@RoleID ", unique_string); 
       com.Parameters.AddWithValue("@IsActive ", val); 
       com.Parameters.AddWithValue("@PermissionRoleID ", unique_string); 
       com.Parameters.AddWithValue("@View ", vaala); 
       com.Parameters.AddWithValue("@Edit ", vaalaa); 
       com.Parameters.AddWithValue("@PermissionAccessoageID ", cmdd); 
       com.ExecuteNonQuery(); 
       con.Close(); 
      } 
     } 
+0

なぜあなたはcmdd(@PermissionAccessoageID)の値を取得したいのですか?それは最後に挿入された行ですか? –

+0

Cmddはすでにデータベースに挿入されています。私はAccesspageIDを取得したい – Vinoth

+0

あなたの最初のselectステートメントは役に立たないようです。コード内のどこにでも結果を使用することはありません。 2番目のif文では、それを実行することさえしません。 – Marco

答えて

0

selectステートメントの結果を使用するのを忘れて、変数に割り当てる必要があります。

最初のifブロックでは実際に実行しますが、結果は使用しません。あなたの2番目のブロックでは、.ExecuteScalar()コールを忘れた。

object oAccesspageID = cmdd.ExecuteScalar(); 
int? AccesspageID = (int?)(!Convert.IsDBNull(oAccesspageID) ? oAccesspageID : null); 
/* ... code ommitted*/ 

//assuming @PermissionAccessoageID is int 
com.Parameters.AddWithValue("@PermissionAccessoageID ", AccesspageID.Value); 

は、ExecuteScalarが結果が見つかりませんされている場合、あなたには、いくつかの方法で、そのために考慮する必要があり、nullを返すことができますので。無効な値で実行しようとしないように、あなたのSProcを呼び出す前に別のif(AccesspageID.HasValue) { }コールを追加したいかもしれません。

0

この行は問題です:

com.Parameters.AddWithValue("@PermissionAccessoageID ", cmdd); 

cmddは、あなたがそのタイプのパラメータを持つことができない、タイプSqlCommandです。

関連する問題