Вот строка подключения:
<connectionStrings>
<add name="DBConnection" connectionString="Data Source=Personal-PC;Initial Catalog=LocalDB;Persist Security Info=True;User ID=google;Password=google" providerName="System.Data.SqlClient" />
</connectionStrings>
Это код позади:
public string connectionString = ConfigurationManager.ConnectionStrings["DBConnection"].ToString();
public void ExecuteSQL(string sqlstring, List<SqlParameter> sqlparam)
{
try
{
SqlConnection objsqlconn = new SqlConnection();
objsqlconn.ConnectionString = connectionString;
if (objsqlconn.State != ConnectionState.Open)
{
objsqlconn.Close();
objsqlconn.Dispose();
objsqlconn.Open();
}
SqlCommand objcmd = new SqlCommand(sqlstring, objsqlconn);
int i, cnt = sqlparam.Count();
for (i = 0; i < cnt; i++)
objcmd.Parameters.Add(sqlparam[i]);
objcmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
И я получил следующую ошибку. Когда я пытаюсь вставить данные в таблицу sql. На самом деле, в чем смысл и как решить эту ошибку.
System.InvalidOperationException was caught
HResult=-2146233079
Message=The ConnectionString property has not been initialized.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at DBdml.DBACC.InsertUpdateDeleteSQLString(String sqlstring, List`1 sqlparam) in D:\dotnet\ASP.netC#\BusinessLayer\DBACC.cs:line 78
InnerException:
2 ответа
Эта последовательность убьет вас:
objsqlconn.Close();
objsqlconn.Dispose();
objsqlconn.Open();
Вы не можете использовать объект подключения после его удаления. На самом деле, вы можете значительно упростить весь этот метод:
public void ExecuteSQL(string sqlstring, IEnumerable<SqlParameter> sqlparam)
{
using (SqlConnection cn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(sqlstring, objsqlconn))
{
cmd.Parameters.AddRange(sqlparam.ToArray());
cn.Open();
cmd.ExecuteNonQuery();
}
}
Вы должны использовать WebConfigurationManager
вместо ConfigurationManager
для чтения из файла web.config
.
Инструкции находятся здесь на MSDN a> и просто включает замену имени класса в вашем случае.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
ConnectionString
и где используете соединение. Приведенный выше код не будет компилироваться, потому чтоconnectionString
— это поле.if (objsqlconn.State != ConnectionState.Open)
наif (true)
connectionString
. Кроме того, вы должны использоватьthrow
(или опуститьCatch
) вместоthrow new Exception(ex.Message)
, чтобы сохранить исходную трассировку стека, включая номера строк.WebConfigurationManager
вместоConfigurationManager
.