2016-03-29 3 views
-4

Hallo ich versuche, Daten in meine Datenbank einzufügen. Das Programm läuft, speichert aber niemals die Werte !!.C# Lernen, SQL-Befehle zu verwenden INSERT

heres der Code:

using System.Data.SqlClient; 

namespace Database_1._0 
{ 
public partial class Form1 : Form 
{ 
    SqlConnection cn = new SqlConnection(@"DataSource=LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Luis\documents\visual studio 2015\Projects\Database_1._0\Database_1._0\DB.mdf;Integrated Security=True"); 
    SqlCommand cmd = new SqlCommand(); 
    SqlDataReader dr; 

    DateTime dateTime = DateTime.UtcNow.Date; 
    string user = "1614258779876465426"; 
    string pass = "3Cp5CeXrfghdfght"; 
    string frecuencyCode = "ANNUAL"; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     cmd.Connection = cn; 
    } 

    private void logo_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Database_1._0 \nWritten by: Luis", "About"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

     cn.Open(); 
     using (SieteWS SieteWS = new SieteWS()) 
     {     
      Respuesta respuesta = SieteWS.SearchSeries(user, pass, frecuencyCode); 
      foreach (internetSeriesInfo seriesInfo in respuesta.SeriesInfos) 
      { 

       cmd.CommandText = "INSERT INTO [dbo].[Serie] ([SerieID], [SerieName], [SerieFrecuency]) VALUES (@SerieID, @SerieName, @SerieFrecuency)"; 
       cmd.Parameters.AddWithValue("@SerieID", seriesInfo.seriesId); 
       cmd.Parameters.AddWithValue("@SerieName", seriesInfo.spanishTitle); 
       cmd.Parameters.AddWithValue("@SerieFrecuency", seriesInfo.frequency); 
       cmd.ExecuteNonQuery(); 
       cn.Close(); 
      } 
     } 
    } 
} 
} 

und der Fehler sagt: errorCS0103: Der Name 'Commandtext' nicht im aktuellen Kontext nicht vorhanden ist. Und wenn ich eine Uhr benutze, habe ich folgendes herausgefunden: cmd.CommandText = ""; . Kann mir jemand sagen, was ich falsch mache?

+6

Welche Codezeile zeigt diesen Fehler? Das ist ein * Compiler * -Fehler, was bedeutet, dass Ihre Aussage "Das Programm läuft" völlig falsch ist. Bitte geben Sie deutlich den * tatsächlichen Fehler * und * das tatsächliche Verhalten * des Codes an. – David

+1

Beachten Sie außerdem, dass Sie die Verbindung _in der Schleife schließen, sodass nur ein Datensatz aktualisiert wird. Am besten erstellen Sie Verbindungen und Befehle mit 'using' Anweisungen und schließen sie erst, wenn alles abgeschlossen ist. –

+0

Beim ersten Mal durch Ihre 'foreach'-Schleife ist Ihre Verbindung geschlossen. – Brandon

Antwort

0

Also vor allem. Verschieben Sie cn.Close(); außerhalb der Schleifen. Wenn es jetzt nicht die Ursache für Ihr Problem ist, wird später ein Problem verursacht.

Wenn das Ihr Problem nicht beheben, schauen Sie weiter.

Es ist nur ein Sack im Dunkeln die Informationen, die ich habe gegeben, aber versuchen Sie folgende Code-Sets ausgeführt wird (innerhalb foreach-Schleife) und sehen, ob einer von ihnen arbeiten:

1 gesetzt:

cmd = new SqlCommand("INSERT INTO [dbo].[Serie] ([SerieID], [SerieName], [SerieFrecuency]) 
VALUES ('"+seriesInfo.seriesId+"', '"+seriesInfo.spanishTitle+"' 
     , '"+seriesInfo.frequency+"')", cn); 
cmd.ExecuteNonQuery(); 

Satz 2:

cmd = new SqlCommand("INSERT INTO [dbo].[Serie] ([SerieID], [SerieName], [SerieFrecuency]) 
VALUES (@SerieID, @SerieName, @SerieFrecuency)", cn); 
cmd.Parameters.AddWithValue("@SerieID", seriesInfo.seriesId); 
cmd.Parameters.AddWithValue("@SerieName", seriesInfo.spanishTitle); 
cmd.Parameters.AddWithValue("@SerieFrecuency", seriesInfo.frequency); 

Lassen sie mich wissen, wie es funktioniert

+0

Set 2 funktioniert gut: D. Danke für den 'cn.Close()' Vorschlag übrigens. Und nochmals vielen Dank !! –

-2

Try this ...

Ändern Sie die Zeile unter den Namen der Datenbank enthalten. Damit es [Ihr Datenbankname] liest. [Dbo]. [Serie]

cmd.CommandText = "EINFÜGEN IN [dbo]. [Serie] ([SerieID], [SerieName], [SerieFrecuency]) WERTE (@SerieID, @Serienname, @SerieFrecuency) ";

Ihre Standarddatenbank ist möglicherweise nicht die Datenbank, in der sich die Tabelle "Serie" befindet.

+0

u.u nop. Die Tabelle bleibt leer:/ –