connectionString,我需要使用密码,但是我正在使用Windows连接

时间:2019-01-26 15:16:25

标签: c# sql

我已经使用Visual Studio创建了一个数据库,我正在使用Windows身份验证连接到该数据库。

我尝试了很多事情,但是没有用

namespace Stock
{
    public partial class Fm_principal : Form
    {
        public SqlConnection connexion_BDD()
        {
            //Connection base de donnée
            string connectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Database;Trusted_Connection=false";

            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                return connection;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

                return connection;
            }
        }
        public Fm_principal()
        {
            InitializeComponent();
        }
        private void cb_test_Click(object sender, EventArgs e)
        {
            connexion_BDD();
            string request = "SELECT ref_pdt FROM produits";
            SqlCommand command = new SqlCommand(request, connexion_BDD());
            SqlDataReader dataReader = command.ExecuteReader();
            while (dataReader.Read())
            {
                cb_test.Items.Add(dataReader["ref_pdt"]);
            }
        }
    }
}

由于当前连接已关闭,因此dataReader出现错误

1 个答案:

答案 0 :(得分:0)

我从字面上敲了一下,但您会想要这样的东西:(提示:像Dapper一样看一下,您可能会更喜欢)

public partial class Fm_principal : Form
{
    public SqlConnection connexion_BDD()
    {
        //Connection base de donnée
        string connectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Database;Trusted_Connection=true";

        SqlConnection connection = new SqlConnection(connectionString);
        try
        {
            connection.Open();
            return connection;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);

            return connection;
        }
    }
    public Fm_principal()
    {
        InitializeComponent();
    }
    private void cb_test_Click(object sender, EventArgs e)
    {
        using (var connection = connection_BDD())
        {
            string request = "SELECT ref_pdt FROM produits";
            using (var command = new SqlCommand(request, connection))
            {
                using (var dataReader = command.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        cb_test.Items.Add(dataReader["ref_pdt"]);
                    }
                }
            }
        }
    }
}

编辑:以防万一我误解了您的问题,以表示您确实要使用用户名和密码进行连接,然后将连接字符串设置为:

string connectionString = "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=Database;User Id=YOURUSERNAME;Password=YOURPASSWORD;Trusted_Connection=false";

编辑:设置SQL凭据(我不建议这样做,因为我认为集成安全性会更好,因为它可以避免用户名/密码凭据泄漏到源代码管理中)

  1. 确保已启用SQL Server身份验证(SSMS->服务器 (右键单击)->属性->安全(确保第二个收音机 按钮被选择为“ SQL Server和Windows身份验证模式”
  2. 您将需要服务器登录名和映射的数据库用户。在服务器下 (在SSMS中),展开安全性->登录名。添加登录名(右键单击登录 选择添加登录)。
  3. 输入所需的登录名(这是 连接字符串中的用户ID),然后选择SQL Server 进行身份验证,然后选择一个(希望很好)的密码。如果这是一个 本地框,您不必在意关闭密码策略 复选框。
  4. 在“数据库角色”下的对话框中,公开或 如果您希望它管理数据库,则使其具有更大的特权。如果这是一个 使帐户sysadmin的本地devbox可以。
  5. 在“用户映射”下的对话框中,选择您的数据库并选择适当的 角色。如果用户只需要访问(读/写)数据,请选择 db_datareader / db_datawriter。通常会在开发人员专区进行挑选 db_owner最好(如果您正在管理模式等)