【问题标题】:The ConnectionString property has not been initialized Error during inserting data to DatabaseConnectionString 属性尚未初始化 将数据插入数据库时​​出错
【发布时间】:2021-02-01 18:14:21
【问题描述】:

我目前正在使用 .NET Web Api 使用存储过程将用户注册到 SQL Server。当我尝试向数据库添加记录时,出现错误

ConnectionString 属性尚未初始化

我已经在互联网上查找以更改连接字符串,但结果仍然相同。我在调试的时候,代码执行到了这一行

db.ExecNonQuery("SSO_Register", parm)

doRegister 方法中然后抛出异常。请帮忙。

连接字符串:

<connectionStrings>
    <add name="_cs" 
         connectionString="Data Source=DESKTOP-KR81RU5\MSSConQLSERVER01;Initial Catalog=HISDB;Integrated Security=True;Connect Timeout=3600" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

dbUtil类:

private static string _cs = null;

public dbUtil(string cs)
{
    _cs = cs;
}

public void ExecNonQuery(string sp, SqlParameter[] parm)
{
    using (SqlConnection connection = new SqlConnection(_cs))
    {
        using (SqlCommand command = new SqlCommand(sp, connection))
        {
            command.CommandType = CommandType.StoredProcedure;
            command.CommandTimeout = 120;

            connection.Open();

            if (parm != null)
            {
                for (int i = 0; i < parm.Length; i++)
                    command.Parameters.Add(parm[i]);
            }

            command.ExecuteNonQuery();
        }
    }
}

doRegister方法:

bool _return = false;

try
{
    string tac = " ";

    Test util = new Test();
    tac = Test.getTac();

    SqlParameter[] parm =
                {
                    new SqlParameter("secure_word", objsso.secure_word),
                    new SqlParameter("full_name", objsso.full_name),
                    new SqlParameter("phone_number", objsso.phone_number),
                    new SqlParameter("nationality", objsso.nationality),
                    new SqlParameter("id_number", objsso.id_number),
                    new SqlParameter("dob", objsso.dob),
                    new SqlParameter("email", objsso.email),
                    new SqlParameter("user_id", objsso.email),
                    new SqlParameter("full_name", objsso.full_name),
                    new SqlParameter("provider_id", objsso.provider_id),
                    new SqlParameter("temp_token", objsso.temp_token),
                    new SqlParameter("tac", tac)
                 
            };

    dbUtil db = new dbUtil(_cs);
    db.ExecNonQuery("SSO_Register", parm);
    _return = true;
}
catch (Exception ex)
{
    _return = false;
    throw ex;
}

return _return;

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/questions/28395222/…
  • _return = false; 是一个空操作,因为它后面跟着throw;。你也可以直接做函数void,如果没有异常返回就成功了
  • 调试你自己的代码。当您通过它来创建连接时,_cs 的实际值是多少?或者简单地测试它并抛出一个错误——这些是你应该已经知道的基本调试技术。我们无法知道您的应用程序逻辑以及该字符串的内容设置不正确的原因。更重要的是,doRegister 中似乎有些奇怪 - 该方法/函数如何访问 dbUtil 的私有成员 _cs?

标签: c# sql-server


【解决方案1】:

您没有从配置中读取连接字符串,因此在您的情况下连接字符串为空。

var connectionString =System.Configuration.ConfigurationManager.
ConnectionStrings["_cs"].ConnectionString;

dbUtil db = new dbUtil(connectionString );

请试试这个。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-11-26
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
相关资源
最近更新 更多