0

Zunächst einmal, ich bin sehr neu zu C#. Ich wurde mit diesem Projekt für eine Geschäftseinheit bei der Arbeit beauftragt.Abrufen von Daten aus SQL und Einfügen aller Daten zurück in db mit C#

Ich habe ein Benutzerformular, um einige Daten aus einer SQL DB abzurufen und dann Benutzereingaben in Textfelder zuzulassen. Dann, wenn sie submit drücken, brauche ich die empfangenen Daten von der DB und dem Benutzer, um in die DB an einer neuen Tabelle geschrieben zu werden. Es ist in C# und Asp.net geschrieben.

Auf Seite Last Ich habe es Daten aus der DB zu sammeln:

HTML-Code:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:contr1 %>" 
SelectCommand="SELECT DISTINCT [Employee Name] FROM Total_Tech_Minutes WHERE 
(Site = 'US.TN.MEMPHIS') ORDER BY [Employee Name]"></asp:SqlDataSource> 
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
ConnectionString="<%$ ConnectionStrings:contr1 %>" 
SelectCommand="SELECT [Total Minutes] AS Total_Minutes FROM [Total_Tech_Minutes] 
WHERE ([Employee Name] = @Employee_Name)"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="Employee_Name" 
PropertyName="SelectedValue" Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

, die perfekt funktioniert. Ich sehe sogar die Aktion auf dem DB Profiler. Das Problem ist, wenn ich den Rest des Codes mache. Ich sehe nichts auf dem DB Profiler für den Code unten.

Im Folgenden ist der HTML-Markup für sie alle zurück in den db einfügen:

<asp:SqlDataSource ID="SqlDataSource3" runat="server" 
ConnectionString="<%$ ConnectionStrings:contr1 %>" 

InsertCommand="Insert into OBH([Tech Name],[Total Minutes],[Off Bench Time], 
[Submitted By],Comments) 

Select [Tech Name]=TechName,[Total Minutes][email protected],[Off Bench Time][email protected],[Submitted By][email protected], 
[email protected]" 
ProviderName="<%$ ConnectionStrings:contr1.ProviderName %>" 
CancelSelectOnNullParameter="False" DataSourceMode="DataReader"> 

<InsertParameters> 

      <asp:ControlParameter ControlID="DropDownList1" Name="TechName" PropertyName="SelectedValue" /> 
      <asp:ControlParameter ControlID="DataList1" Name="TM" PropertyName="SelectedValue" /> 
      <asp:ControlParameter ControlID="TextBox1" Name="OBT" PropertyName="Text" /> 
      <asp:FormParameter FormField="Login1.UserName" Name="SB" /> 
      <asp:ControlParameter ControlID="TextBox2" Name="Comments" PropertyName="Text" /> 
     /InsertParameters> 
    /asp:SqlDataSource> 

Dies ist der Button-Aktion: Das funktioniert perfekt

protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlDataSource3.DataBind(); 
    } 
+1

geschützt void Button1_Click (Objektquelle, EventArgs e) { SqlDataSource3.Insert(); } – MMK

+0

Der Fehler, den ich jetzt bekomme, ist dies (ich glaube, es ist von mir versucht, den Login-Namen zu erhalten): Eine Ausnahme vom Typ 'System.InvalidOperationException' aufgetreten in System.Web.dll, wurde aber nicht in Benutzercode behandelt Weitere Informationen: String [1]: Die Size-Eigenschaft hat eine ungültige Größe von 0. –

+0

Überprüfen Sie Ihre Verbindungszeichenfolge. Bitte lesen Sie auch den Abschnitt Ausnahmen hier. https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.insert(v=vs.110).aspx – MMK

Antwort

0

@MMK.

protected void Button1_Click(object source, EventArgs e) { SqlDataSource3.Insert(); } 

- MMK gestern

0

nur SQL-Abfrage verwenden, und klicken Sie

Einsatz in table2 (val1, val2, val3.val4 ....) wählen isnull (a, ''), isnull (b, ''), isnull (c, ''), isnull (d, '') ...

Verwandte Themen