0%

71. C#连接数据库

sql server在安装时,一般都会选择默认实例服务器以Window身份认证,以电脑账户为名称无密码形式存在,后期我们开发项目时,用到的数据库服务器都是以IP为名称,单独设立密码的,此时我们默认安装的服务器引擎怎么修改成项目通用形式呢。


  • 步骤

  1. 打开数据库,使用默认账户登录(电脑默认账户,无密码)。
  2. 右击”服务器引擎”,选择“属性”表中的“安全性”,“服务器身份验证” 选择 “SQL Server”和“Windows身份验证模式”,这一步在下面好像可以再选,具体本人没试过。
  3. 找到数据库 “安全性” –>“登录名” –>“sa” 右击属性,可以修改“登录名”,以SQL Server身份验证,填写密码(密码可能会需要复杂度,字母数字组合,修改失败注意下)。
  4. 依旧是上面截图这里,看“状态栏”内容,有人忘了设置这里,去用”sa”账户登录,得到错误,此账户禁止使用,原因就在这里,在这里我们要设置“登录”选项为“启用”。
  5. 上面说了怎么修改服务器的名称和密码,可以用下面方式登录数据库。
  6. 但是我们的最终目标是以IP为登录名来登录数据库,打开Sql Server配置管理器(Sql Server Configuration Manager),找到“SQL Server网络配置”,进入“SQLEXPRESS的协议” ,“TCP/IP”右击属性 “协议” 中“已启用”修改为“是”
  7. 继续操作第6步,“TCP/IP”右击属性 “IP 地址” 中 修改 “IP2”中的 IP地址 为自己的电脑IP,这里必须是自己电脑的IP,不是你自己随便给的IP。
  8. 在Sql Server配置管理器(Sql Server Configuration Manager)中重启数据库服务。
  9. 以IP为名称登录,结束。
  • 问题

  1. 出现SQL Server2014“用户'sa'登录失败,错误18456”问题
    1. 使用Windows身份验证登录数据库。
    2. 右键数据库服务器名,选择【属性】。
    3. 打开“服务器属性”窗口,选择【安全性】,更改“服务器身份验证”,如下图所示。
    4. 展开数据库服务器名—“安全性”—“登录名”, 右键“sa”用户,选择【属性】。
    5. 打开“登录属性”窗口,选择【常规】,设置密码。
    6. 仍然在“登录属性”窗口,选择【状态】,选择“登录”下面的【已启用】,如下图所示。
    7. 右键数据库服务器名,选择【重新启动】。
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
    scsb.DataSource = "127.0.0.1";
    scsb.UserID = "sa";
    scsb.Password = "password";
    scsb.InitialCatalog = "demo";

    //MessageBox.Show(scsb.ToString());
    SqlConnection conn = new SqlConnection(scsb.ToString());
    if (conn.State == System.Data.ConnectionState.Closed) conn.Open();
    string str_sql = "select * from customer";
    //SqlCommand comm = new SqlCommand(str_sql, conn); // 查询单行

    // 查询数据表
    SqlDataAdapter da = new SqlDataAdapter(str_sql, conn);
    DataSet ds = new DataSet();
    da.Fill(ds, "test"); // 参数1:dataset对象; 参数2:表名,自定义的名字,不需要和查询的表名相同

    /* 绑定数据到datagridview */
    /* 方法一 */
    // show_dataGridView.DataSource = ds;
    // show_dataGridView.DataMember = "test";

    /* 方法二 */
    //prod_dataGridView.DataSource = ds.Tables["product"];

    /* 方法三 */
    DataTable dt = ds.Tables["test"];
    prod_dataGridView.DataSource = dt.DefaultView;