簡體   English   中英

無法連接數據庫:'ConnectionString 屬性尚未初始化'

[英]Unable to connect with database: 'The ConnectionString property has not been initialized'

我無法為我的學校項目從 Visual Studio 中的 Sql-server 連接我的數據庫。 我嘗試了多種無效的解決方案......希望你能幫助我!

這是我的 App.config 中的 ConnectionString:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="connString" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True" />
  </connectionStrings>
</configuration>

我已經編寫了我的代碼,以便能夠打開與我的數據庫的連接並檢查登錄窗口中的用戶憑據是否正確。 當使用正確的憑據(與數據庫中的相同)單擊 btnSubmit() 時,它應該重定向到一個新窗口。

唯一的問題是,在運行我的解決方案時,我總是在conn.Open()處收到相同的錯誤: System.InvalidOperationException: 'The ConnectionString property has not been initialized。

這是我的登錄窗口代碼:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using MyClassLibrary;

namespace SlnProject
{
    /// <summary>
    /// Interaction logic for Login.xaml
    /// </summary>
    public partial class Login : Window
    {
        public Login()
        {
            InitializeComponent();
        }

        private void btnSubmit_Click(object sender, RoutedEventArgs e)
        {
            string connectionString = ConfigurationManager.AppSettings["connString"];
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                String query = "SELECT COUNT(1) from [User] WHERE @login = login AND @password = paswoord";
                SqlCommand sqlCmd = new SqlCommand(query, conn);
                sqlCmd.CommandType = CommandType.Text;
                sqlCmd.Parameters.AddWithValue("@login", txtName.Text);
                sqlCmd.Parameters.AddWithValue("@password", txtPassword.Text);
                int count = Convert.ToInt32(sqlCmd.ExecuteScalar());
                if (count == 1)
                {
                    Main.Content = new WpfAdmin();
                }
                else
                {
                    MessageBox.Show("Foute ingave. Naam of passwoord is incorrect.");
                }
            }
        }
        private void btnKlant_Click(object sender, RoutedEventArgs e)
        {
            Main.Navigate(new WpfGebruiker());
        }

我還驗證了我的連接是否正常工作,並且在 Visual Studio 中沒有看到任何問題。

有人知道如何解決這個問題嗎? 先感謝您。

使用以下內容,通過您的設置進行測試。

var connectionString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;

using (var conn = new SqlConnection(connectionString))
{
    conn.Open();
}

另一件要嘗試的事情,看看您的連接字符串是否在列表中,並在名稱后附加了Data ,例如connStringData

var settings = ConfigurationManager
    .ConnectionStrings
    .OfType<ConnectionStringSettings>().ToList();

for (int index = 0; index < settings.Count(); index++)
{
    Console.WriteLine($"{index,-3}{settings[index].Name,-10}{settings[index].ConnectionString}");
}

或者,將 app.config 更改為

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
    </startup>
    <appSettings>
        <add key="SqlServerConnection" value="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True" />
    </appSettings>
</configuration>

用法

using (var conn = new SqlConnection(ConfigurationManager.AppSettings["SqlServerConnection"]))
{
    conn.Open();
    Console.WriteLine("Opened");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM