2015-09-17 3 views
0

Вот HTML Разметка gridview.I означают страницы ASPXСбой сохранить несколько данных из GridView в базу данных

<asp:GridView ID="Gridview1" runat="server" ShowFooter="true" AutoGenerateColumns="false" 
    OnRowCreated="Gridview1_RowCreated" Height="145px"> 
    <Columns> 
     <asp:BoundField DataField="RowNumber" HeaderText="Row Number" /> 
     <asp:TemplateField HeaderText="Header 1"> 
      <ItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Header 2"> 
      <ItemTemplate> 
       <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Header 3"> 
      <ItemTemplate> 
       <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true" DataTextField="CURRENCY_NAME" 
        DataValueField="CURRENCY_ID"> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Header 4"> 
      <ItemTemplate> 
       <asp:DropDownList ID="DropDownList2" runat="server" AppendDataBoundItems="true" DataTextField="BRAND_NAME" 
        DataValueField="BRAND_ID"> 
       </asp:DropDownList> 
      </ItemTemplate> 
      <FooterStyle HorizontalAlign="Right" /> 
      <FooterTemplate> 
       <asp:Button ID="ButtonAdd" runat="server" Text="Add New Row" OnClick="ButtonAdd_Click" /> 
      </FooterTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">Remove</asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
<asp:Button ID="BtnSave" runat="server" Text="Save All" OnClick="BtnSave_Click" /> 
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>` 

Вот код позади, чтобы сохранить данные в базу данных

private void InsertRecords(StringCollection sc) 
    { 
     StringBuilder sb = new StringBuilder(string.Empty); 
     string[] splitItems = null; 
     const string sqlStatement = "INSERT INTO GridViewDynamicData (Field1,Field2,Field3,Field4) VALUES"; 
     foreach (string item in sc) 
     { 
      if (item.Contains(",")) 
      { 
       splitItems = item.Split(",".ToCharArray()); 
       sb.AppendFormat("{0}('{1}','{2}','{3}','{4}'); ", sqlStatement, splitItems[0], splitItems[1], splitItems[2], splitItems[3]); 
      } 
     } 

     using (OracleConnection strConn = GetConnection()) 
     { 

       strConn.Open(); 
       OracleCommand cmd = new OracleCommand(sb.ToString(), strConn); 

       cmd.CommandType = CommandType.Text; 
       cmd.ExecuteNonQuery(); 


       lblMessage.Text = "Records successfully saved!"; 


     } 
    } 

    protected void BtnSave_Click(object sender, EventArgs e) 
    { 
     int rowIndex = 0; 
     StringCollection sc = new StringCollection(); 
     if (ViewState["CurrentTable"] != null) 
     { 
      DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"]; 
      if (dtCurrentTable.Rows.Count > 0) 
      { 
       for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
       { 
        //extract the TextBox values 
        TextBox box1 = (TextBox)Gridview1.Rows[rowIndex].Cells[1].FindControl("TextBox1"); 
        TextBox box2 = (TextBox)Gridview1.Rows[rowIndex].Cells[2].FindControl("TextBox2"); 
        DropDownList ddl1 = (DropDownList)Gridview1.Rows[rowIndex].Cells[3].FindControl("DropDownList1"); 
        DropDownList ddl2 = (DropDownList)Gridview1.Rows[rowIndex].Cells[4].FindControl("DropDownList2"); 
        //get the values from TextBox and DropDownList 
        //then add it to the collections with a comma "," as the delimited values 
        sc.Add(string.Format("{0},{1},{2},{3}", box1.Text, box2.Text, ddl1.SelectedItem.Text, ddl2.SelectedItem.Text)); 
        rowIndex++; 
       } 
       //Call the method for executing inserts 
       InsertRecords(sc); 
      } 
     } 
    } 

Моя таблица базы данных здесь

CREATE TABLE ERP.GRIDVIEWDYNAMICDATA 
(
    FIELD1 VARCHAR2(500 BYTE), 
    FIELD2 VARCHAR2(500 BYTE), 
    FIELD3 VARCHAR2(500 BYTE), 
    FIELD4 VARCHAR2(500 BYTE) 
) 

Когда я RU В этом проекте отображается ошибка «ORA-00911: недопустимый символ». Я не знаю, что не так. Любая помощь будет оценена.

+0

Можете ли вы принять значения, которые являются пытается вставить в БД и написать инструкцию insert непосредственно .. и выяснить, что не так во входящих данных? –

+0

Вставить в значения ERP.GRIDVIEWDYNAMICDATA (ваши значения); попробуйте это прямо прямо на вашем оракуле .. вместо того, чтобы проверять свой код на C# .. потому что ошибка во входящих данных .. а затем, соответственно, вам нужно будет ограничить пользователя вводить эти данные. –

+0

вот что он пытается вставить ' INSERT INTO GridViewDynamicData (Field1, Field2, Field3, Field4) VALUES ('a', 'b', 'US $', 'Dual'); INSERT INTO GridViewDynamicData (Field1, Field2, Field3, Field4) VALUES ('aa', 'bbb', 'US $', 'Tiger'); –

ответ

0

У меня недостаточно репутации для комментариев, поэтому я отправляю свое исследование в качестве ответа.

Наиболее вероятная причина заключается в использовании ; в здании запроса.

Удалить ; (с запятой) из конца строки SQL. Из SQL-запроса, который вы строите из кода.

точкой с запятой (май вызывает ошибку)

sb.AppendFormat("{0}('{1}','{2}','{3}','{4}'); ", sqlStatement, splitItems[0], splitItems[1], splitItems[2], splitItems[3]);

Без запятой (Если попробовать это)

sb.AppendFormat("{0}('{1}','{2}','{3}','{4}') ", sqlStatement, splitItems[0], splitItems[1], splitItems[2], splitItems[3]);

Или

Ваша строка может не иметь прямых ' одинарных кавычек. Попытайтесь написать это снова. (Это не кажется хорошо, хотя в вашем коде размещены вместе с вопросом Но ничего плохого в проверке.).

Ссылки: ORA-00911: invalid character

https://community.oracle.com/thread/2511511

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/hol08/dotnet/getstarted-c/getstarted_c_otn.htm

+0

ваш ответ был полезен полностью .. после удаления запятой его добавления одной строки ... но при добавлении нескольких строк, дающих ошибку. –

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