C# Datenbank Die ConnectionString-Eigenschaft wurde nicht initialisiert
Ich versuche Sie zum einfügen von Werten in meiner Datenbank und wenn ich Versuch, es hinzuzufügen, mein Programm einfach Abstürzen, gibt mir eine Fehlermeldung, dass Der ConnectionString-Eigenschaft wurde nicht initialisiert, aber ich ordnungsgemäß initialisieren. Hier ist mein code:
private static string conStr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\aldrin\documents\visual studio 2013\Projects\MidtermAssignment_Ramirez\MidtermAssignment_Ramirez\MasterFile.mdf;Integrated Security=True";
SqlConnection myCon = new SqlConnection();
private int studId, year, units;
private string fName, lName, mName, course, payment;
public void insertRecord()
{
myCon.Open();
SqlCommand insertInfo = new SqlCommand("spInsertStudentInformation", myCon);
insertInfo.CommandType = CommandType.StoredProcedure;
insertInfo.Parameters.Add("@studId", SqlDbType.Int).Value = studId;
insertInfo.Parameters.Add("@fName", SqlDbType.VarChar).Value = fName;
insertInfo.Parameters.Add("@lName", SqlDbType.VarChar).Value = lName;
insertInfo.Parameters.Add("@mName", SqlDbType.VarChar).Value = mName;
insertInfo.ExecuteNonQuery();
myCon.Close();
myCon.Open();
SqlCommand insertData = new SqlCommand("spInsertStudentData", myCon);
insertData.CommandType = CommandType.StoredProcedure;
insertData.Parameters.Add("@studId", SqlDbType.Int).Value = studId;
insertData.Parameters.Add("@course", SqlDbType.VarChar).Value = course;
insertData.Parameters.Add("@year", SqlDbType.Int).Value = year;
insertData.Parameters.Add("@units", SqlDbType.Int).Value = units;
insertData.Parameters.Add("@payment", SqlDbType.VarChar).Value = payment;
insertData.ExecuteNonQuery();
myCon.Close();
}
Hier ist der code in meinem button:
myData.StudId = Convert.ToInt32(txtStudId.Text);
myData.FName = txtFName.Text;
myData.LName = txtLName.Text;
myData.MName = txtMName.Text;
myData.Course = cboCourse.SelectedItem.ToString();
myData.Year = Convert.ToInt32(cboYear.SelectedItem.ToString());
myData.Units = Convert.ToInt32(txtUnits.Text);
myData.Payment = cboPayment.SelectedItem.ToString();
myData.insertRecord();
und hier ist meine gespeicherte Prozeduren:
CREATE PROCEDURE [dbo].spInsertStudentData
@studId int,
@course varchar(50),
@year int,
@units int,
@payment varchar(50)
AS
INSERT INTO StudentData VALUES (@studId, @course, @year, @units, @payment)
RETURN 0
CREATE PROCEDURE [dbo].spInsertStudentInformation
@studId int,
@fName varchar(50),
@lName varchar(50),
@mName varchar(50)
AS
INSERT INTO StudentInformation VALUES (@studId, @fName, @lName, @mName)
RETURN 0
Ich studiere Datenbanken, die vor kurzem in ASP.NET und das ist, was ich mache, aber ich weiß nicht, warum es nicht läuft Prima in C#.
Nicht halten Globale variable für eine Verbindung. Deklarieren Sie die variable lokal innerhalb einer using-Anweisung, um sicherzustellen, dass es geschlossen und entsorgt auch im Fall von Ausnahmen.
Platz connection-string in die config-Datei
Platz connection-string in die config-Datei
InformationsquelleAutor Aldrin Ramirez | 2015-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehlermeldung ist klar. Ein SqlConnection-Objekt muss ein connectionstring-Eigenschaft, bevor Sie versuchen, um die Verbindung zu öffnen. Also, wenn Sie bauen die Verbindung übergeben Sie die connectionstring-oder legen Sie die ConnectionString-Eigenschaft vor dem öffnen.
Aber ich schlage vor, Sie beginnen mit local-connection-Variablen anstelle von globalen Dateien. Und halten Sie diese Erklärung innerhalb einer using-Anweisung
Das SqlConnection-Objekt verwendet die Verbindungs-Pooling Infrastruktur und damit besser ist, den lokalen Variablen, die recycelt werden können, indem der pool der Verbindung, ohne zu halten eine wichtige Ressource ist gesperrt für Ihr Programm
Schließlich die using-Anweisung vermeidet gefährliche Speicher-Lecks schließen und entsorgen Sie die Einweg-Gegenstände wie die Verbindung und der Befehl ist auch im Fall von Ausnahmen
Es ist ein weiterer Punkt zu beachten in Ihrem code. Führen Sie die zwei verwandten Befehle. Ich bin sicher, dass Sie nicht möchten, legen Sie die Schüler-info, wenn, aus irgendeinem Grund, Sie sind nicht in der Lage, legen die Daten der Studierenden. Diese Szenarien Aufruf für die Eröffnung einer SqlTransaction, hält Ihre Daten atomic (was bedeutet, dass Sie nicht wollen, etwas zu ändern in der Datenbank, wenn alle die Operationen fehlschlagen)
Die endgültige Commit persistent in der Datenbank wird alles beim Austritt aus dem block, ohne den Aufruf der Commit wird automatisch ein Rollback alle änderungen, die Sie an Ihre Tische
InformationsquelleAutor Steve
Müssen Sie die von Ihnen erstellte connection string in der ersten Zeile, um Ihre Verbindung Konstruktor:
InformationsquelleAutor rory.ap
Fehlermeldung ist so klar;
Können Sie es
ConnectionString
Eigenschaft zuconStr
;oder können Sie es auf Konstruktor als parameter;
Als Steve sagte, speichern Sie Ihre
SqlConnection
wie eine Globale variable ist keine gute Idee. Verwenden Sie lokale Variablen, und verwenden Sie- Anweisung zu entsorgen Sie Ihre verbindungen und Befehle.
InformationsquelleAutor Soner Gönül