2015-05-27 3 views
-1

У меня есть GridView, и я хочу, чтобы проверили линию вставки, но я вижу эту ошибку:CommandText свойство не была инициализирована ошибка в GridView

CommandText property has not been initialized.

Я думаю, что моя ошибка о strArrays. Я работаю два дня об этом

Как я могу исправить?

StringBuilder stringBuilder = new StringBuilder(string.Empty); 
SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString.ToString()); 
SqlCommand sqlCommand = new SqlCommand(); 
for (int i = 0; i < GridView1.Rows.Count; i++) 
{ 
    int type = 2; 
    CheckBox chkUpdate = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("chkSelect"); 

    TextBox txtAmount = (TextBox)GridView1.Rows[i].Cells[5].FindControl("txtAmount"); 

    if (chkUpdate != null) 
    { 
     if (chkUpdate.Checked) 
     { 
     string strID = GridView1.Rows[i].Cells[1].Text; 
     GridView1.Rows[i].FindControl("txtLocation")).Text; 
     string text = this.GridView1.Rows[i].Cells[1].Text; 
     string[] strArrays = new string[] { "INSERT INTO [OrderCancel] 
              ([OrderID], 
               [Message], 
               [Type], 
               [RelationProductID], 
               [Amount]) 
               VALUES(" , 
               Request.QueryString["o"] , 
               ",'" , txtWhy.Text , 
               "',",type.ToString(),", 
               " , strID , "," , 
               txtAmount.Text , ");" }; 
     stringBuilder.Append(string.Concat(strArrays)); 

     //append update statement in stringBuilder 
     stringBuilder.Append(string.Concat(strArrays)); 
     } 
    } 
    try 
    { 
     try 
     { 
     sqlCommand.CommandType = CommandType.Text; 
     sqlCommand.CommandText = stringBuilder.ToString(); 
     sqlCommand.Connection = sqlConnection; 
     sqlConnection.Open(); 
     sqlCommand.ExecuteNonQuery(); 
     } 
     catch (SqlException sqlException) 
     { 
     throw new Exception(string.Concat("Error in Updation", 
              sqlException.Message)); 
     } 
    } 
    finally 
    { 
     sqlConnection.Close(); 
    }  
+1

Используйте 'using' вместо' finally' и избавьтесь от своего бесполезного блока 'catch'. – SLaks

+1

У вас есть уязвимость в SQL-инъекции. – SLaks

+0

Как я могу исправить? @SLaks – mguzel

ответ

0

Эта ошибка обычно возникает, если вы не задали свойство commandText. глядя на ваш код, похоже, что ваша переменная stringbuilder не устанавливается. вы пытались поставить точку останова внутри цикла «chkUpdate.Checked»? если да, то вы можете опубликовать SQL, который получает построенный в цикле

+0

У меня есть флажок и текстовое поле, когда-либо линии. Я хочу вставить строку, которая была проверена. – mguzel

+1

Обычно вы пишете вопросительные знаки в комментариях, а не в ответах – Steve

+0

Я должен был это сделать, потому что у меня не было достаточной репутации, чтобы добавлять комментарии – Karthik

1

Ваш код может быть очищен, вы можете сделать следующее:

private readonly string dbConnection = "..."; 
private const string query = "... Column = @Column"; 

Ради краткости я добавил .., который будет соотнесен с вашей строкой соединения и вашим запросом с параметрами.

var message = String.Empty; 
using(var connection = new SqlConnection(dbConnection)) 
    using(var command = new SqlCommand(query, dbConnection)) 
    { 
      connection.Open(); 
      command.CommandType = CommandType.Text; 
      command.Parameters.Add("@Column", SqlDbType.NVarChar).Value = message; 
      command.ExecuteNonQuery(); 
    } 

Так что небольшой фрагмент будет находиться внутри метода, который будет проходить модель данных в сетке. Затем, когда вы передаете значение из своей сетки, вы должны построить свою модель и перейти к методу, который будет записываться в вашу базу данных.

Кроме того, когда вы используете StringBuilder вы также должны вызвать ToString();, чтобы убедиться, что это string, а не StringBuilder, когда ваш использования.

 Смежные вопросы

  • Нет связанных вопросов^_^