iT邦幫忙

0

C# MVC 連線字串問題

  • 分享至 

  • xImage

您好:
參考下方網址
https://dotblogs.com.tw/dennismao/2012/11/13/82906
我有試過該帳密,可以連線,也用 udl可以連線
https://ithelp.ithome.com.tw/upload/images/20220203/20104095NddQs8Ekq1.png

但就會出現
System.Data.SqlClient.SqlException: '使用者 'sa,Password=123456789' 的登入失敗。'
請問,這有哪一方是可以除錯嗎?
謝謝!

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace m01.Models
{
    public class DBManager
    {
        private readonly string ConnStr = "Data Source=127.0.0.1;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa,Password=123456789";
                 //const string db63_PTERP = "Data Source=127.0.0.1\\SQL2005;Initial Catalog=PT_ERP;Persist Security Info=True;User ID = sa; Password=12345";

        public List<Card> GetCards()
        {
            List<Card> cards = new List<Card>();
            SqlConnection sqlConnection = new SqlConnection(ConnStr);
            SqlCommand sqlCommand = new SqlCommand("SELECT * FROM card");
            sqlCommand.Connection = sqlConnection;
            sqlConnection.Open();

            SqlDataReader reader = sqlCommand.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Card card = new Card
                    {
                        ID = reader.GetInt32(reader.GetOrdinal("id")),
                        Char_name = reader.GetString(reader.GetOrdinal("char_name")),
                        Card_name = reader.GetString(reader.GetOrdinal("card_name")),
                        Card_level = reader.GetString(reader.GetOrdinal("card_level")),
                    };
                    cards.Add(card);
                }
            }
            else
            {
                Console.WriteLine("資料庫為空!");
            }
            sqlConnection.Close();
            return cards;
        }

    }//--CALSS

    
先建立一個新使用者(非sa),再把需要的權限開給這個帳號來試試看會不會錯
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
Samuel
iT邦好手 1 級 ‧ 2022-02-03 15:30:30
最佳解答
"Server=伺服器位置;Database=資料庫;Trusted_Connection=True;MultipleActiveResultSets=true;User ID=帳號;Password=密碼"

比方

"Server=.\SQLExpress;Database=Northwind;Trusted_Connection=True;MultipleActiveResultSets=true"

"Server=.;Database=Northwind;Trusted_Connection=True;MultipleActiveResultSets=true"

本機若裝的是SQL Server 2019
打開SQLServerManager15.msc跟services.msc做確認
確認現在實體指定的是指向到本機預設MSSQLSERVER而非SQLEXPRESS
若是預設的MSSQLSERVER
可以直接一個點.

若是SQLEXPRESS
則要寫.\SQLExpress

預設在安裝SQL Server時候若沒有去特別設定額外的實體名稱
則默認實體名稱會是., (local)或者machine name跟ip address,當然在服務中默認捨麼都沒有改的情況下會顯示MSSQLSERVER

Trusted_Connection=True
信任目前登入帳號登入資料庫。

MultipleActiveResultSets=true
允許在單一次DB連線中可執行多個批次作業。

noway iT邦研究生 1 級 ‧ 2022-02-03 16:37:59 檢舉

您好:可以了,缺少Trusted_Connection=True 這一段,謝謝!

我要發表回答

立即登入回答