Base de données C # La propriété ConnectionSsortingng n'a pas été initialisée

J'essaye d'insert des valeurs dans ma database et chaque fois que j'essaye de l'append, mon programme tombe en panne, me donnant une erreur que la propriété de ConnectionSsortingng n'a pas été initialisée, mais je l'initialise correctement. Voici mon code:

private static ssortingng 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 ssortingng 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(); } 

Voici le code dans mon button:

 myData.StudId = Convert.ToInt32(txtStudId.Text); myData.FName = txtFName.Text; myData.LName = txtLName.Text; myData.MName = txtMName.Text; myData.Course = cboCourse.SelectedItem.ToSsortingng(); myData.Year = Convert.ToInt32(cboYear.SelectedItem.ToSsortingng()); myData.Units = Convert.ToInt32(txtUnits.Text); myData.Payment = cboPayment.SelectedItem.ToSsortingng(); myData.insertRecord(); 

et voici mes procédures stockées:

 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 

J'étudie des bases de données récemment dans ASP.NET et c'est ce que je fais, mais je ne sais pas pourquoi cela ne fonctionne pas bien en C #.

Le message d'erreur est clair. Un object SqlConnection a besoin d'une string de connection avant d'essayer d'ouvrir la connection. Ainsi, lorsque vous créez la connection, vous passez la string de connection ou définissez la propriété ConnectionSsortingng avant l'ouverture.

Mais je vous suggère vraiment de commencer à utiliser des variables de connection locales plutôt que des variables globales. Et gardez cette déclaration dans une instruction using

 private static ssortingng conStr = @"....."; public void insertRecord() { using(SqlConnection myCon = new SqlConnection(conStr)) using(SqlCommand insertInfo = new SqlCommand("spInsertStudentInformation", myCon)) { myCon.Open(); insertInfo.CommandType = CommandType.StoredProcedure; .... insertInfo.ExecuteNonQuery(); // No need to close the connection here.... SqlCommand insertData = new SqlCommand("spInsertStudentData", myCon); insertData.CommandType = CommandType.StoredProcedure; .... insertData.ExecuteNonQuery(); } } 

SqlConnection utilise l'infrastructure de pool de connections et il est donc préférable d'avoir des variables locales qui peuvent être recykeyes par le pool de connection sans garder une ressource importante verrouillée pour votre programme

Enfin l' instruction using évite les memory leaks dangereuses en fermant et en disposant les objects jetables comme la connection et la command aussi en cas d'exceptions

Vous devez fournir la string de connection que vous avez créée dans votre première ligne à votre constructor de connection:

 SqlConnection myCon = new SqlConnection(conStr); 

Le message d'erreur est si clair.

La propriété ConnectionSsortingng n'a pas été initialisée

Vous pouvez définir sa propriété ConnectionSsortingng sur conStr as;

 myCon.ConnectionSsortingng = conStr; 

ou vous pouvez le spécifier sur le constructor en tant que paramètre

 SqlConnection myCon = new SqlConnection(conStr); 

Comme l'a dit Steve; save votre SqlConnection tant que variable globale n'est pas une bonne idée. Utilisez des variables locales pour cela et utilisez l' instruction statement pour disposer de vos connections et commands.

 using(SqlConnection myCon = new SqlConnection(conStr)) using(SqlCommand insertInfo = myCon.CreateCommand()) { ... }