很惭愧,身为大三的软件工程学生我居然连数据库的连接都记不清楚……还是老老实实的开个记录吧。

材料

  • Microsoft Visual Studio 2017
  • 一个ASP .NET Web窗体网站项目
  • Microsoft SQL Server 2017(这个不知道有没有影响,因为全程没用到,但之前有用它连接上过数据库)

步骤

1、创建数据库文件
  • 右键点击App_Data文件夹,在“添加”中选择“添加新项
  • 在弹出的窗口中找到“SQL Server数据库”并点击,在下方输入数据库的名字
2、添加表格
  • 如此,我们就得到了一个新的空数据库。在App_Data文件夹下找到它,随后右键单击,点击“打开”,我们可以在右侧的服务器资源管理器看见它
  • 在资源管理器中右键点击“”,选择“添加新表”,经过一段时间的加载后,VS的主视图上将会出现SQL Server的设计视图
  • 接下来要做的事情和在SSMS里是一样的,为你的表格添加字段并设置其数据类型,如果你想修改表格的名字,你可以在下方的Design窗口里直接修改CREATE TABLE [dbo].[Table],将Table改成你想要的表名称,随后点击左上角的“更新(U)
  • 之后系统会弹出一个名为“预览数据库更新”的窗口,点击“更新数据库”即可。至此,一张表就创建好了,在开始下一步之前,请右击服务器资源管理器中你刚创建的表格,选择“显示表数据”,在弹出的界面中为你的表先添加一些样本数据。
3、创建到数据库的连接
  • 数据添加好,我们可以开始建立到数据库的连接了。首先在服务器资源管理器中右键单击你的数据库,选择“属性
  • 在属性列表中,我们可以在连接这一项中找到连接字符串,复制其中的内容,它就是我们创建连接时要用的URL
  • 之后要做的事情就和日常一样了,利用SqlConnection和SqlCommand等微软提供的数据库连接类打开连接并执行sql语句,下面是我写的demo中的一部分:
/// <summary>
    ///     添加一个新的卡车信息到数据库中
    /// </summary>
    /// <param name="truck">待添加的卡车信息</param>
    /// <returns></returns>
    public static bool AddNewVehicle(Truck truck)
    {
        // VehicleDAO.ConnStr是我在另一个类中定义的字符常量,里面保存着我们刚复制的连接字符串
        // 可以根据实际情况将其换成其他的字符串
        using (SqlConnection Conn = new SqlConnection(VehicleDAO.ConnStr))
        {
            try
            {
                Conn.Open();
                SqlCommand Comm = new SqlCommand();
                Comm.Connection = Conn;
                string sql = "INSERT INTO Vehicle VALUES(@License, @Type, @Length, @Weight, @Load, @UsedYear, @Mileage);";
                Comm.CommandText = sql;
                Comm.Parameters.AddWithValue("@License", truck.License);
                Comm.Parameters.AddWithValue("@Type", truck.Type);
                Comm.Parameters.AddWithValue("@Length", truck.Length);
                Comm.Parameters.AddWithValue("@Weight", truck.Weight);
                Comm.Parameters.AddWithValue("@Load", truck.Load);
                Comm.Parameters.AddWithValue("@UsedYear", truck.UsedYear);
                Comm.Parameters.AddWithValue("@Mileage", truck.Mileage);
                Comm.ExecuteNonQuery();
                return true;
            }
            catch (SqlException e)
            {
                Console.WriteLine("添加功能出现问题,请及时维护");/*/
                Console.WriteLine(e.Message);// */
                return false;
            }
        }

    }

        我原本习惯性的想像用Java那样先写个DAO类再写个Server类再写个的Page来调用Server里的方法,结果没想到巨硬全部都帮我弄好了,连关闭的部分都用using给我省掉了,真是轻松。完成后执行成功的结果如下图:

                                                

SQL SERVER 2000 链接服务器 sqlserver2017连接服务器_数据库

关于附加数据库

        有时候我们会希望使用SSMS中已经创建好的数据库,在这里我再补充关于如何导入外部数据库的方法。

1、首先我们要先确认数据库的版本,高版本数据库不被支持使用

        巨硬神奇的自己不兼容自己的毛病在这里发挥的淋漓尽致,版本号高于2015的全部连接失败。我曾希望通过修改兼容性来解决它,遗憾的是VS还是会说你版本号过高。所以这里唯一的处理方式就是创建低版本号的数据库文件。

  • 创建低版本数据库方法如下(附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法):右键单击数据库 -> 选择“任务” -> 选择“生成脚本”,在“设置脚本编写选项”的高级中找到“服务器版脚本”这一选项,选择低版本的数据库。之后一路点击确定和完成,数据库脚本就自动生成好了。之后打开低版本数据库,执行该脚本即可。
2、设置数据库及其日志文件权限

        在拥有一个符合要求的数据库后,我们还需要修改数据库文件(.mdf)及其日志文件(.ldf)的权限。右键单击mdf文件 -> 选择“属性” -> 选择“安全”选项卡 -> 选择“高级”,你会看到这个画面:

        

SQL SERVER 2000 链接服务器 sqlserver2017连接服务器_右键_02


        在这里,如果你发现主体那一栏没有“Authenticated Users”,你就点击添加,点击上方的“选择主体”,把Authenticated Users复制进去后确定,选择“完全控制”,之后点击确定,保存我们刚才做的修改。

        

SQL SERVER 2000 链接服务器 sqlserver2017连接服务器_Server_03


        如果你已经有了“Authenticated Users”但是它没有“完全控制”这一权限,那这是因为它创建时继承了父类文件的权限。点击下方的“禁用继承”,选择第一项,之后按上面的操作修改权限即可。

3、创建连接

        在完全获取权限后,我们就可以创建数据库与项目的连接了。【建议连接之前先将数据库移动到App_Data这个文件夹下】右键单击“App_Data”文件夹 -> 选择“添加” -> 选择“现有项”,找到你的数据库文件双击(此处不用点击日志文件,导入数据库后它会自动附加进来),你的数据库就会自动附加进来了。这样操作有个好处,VS会自动创建到该数据库的连接,如果你想检查该连接是否成功,右键单击数据库后点击“刷新”即可。

SQL SERVER 2000 链接服务器 sqlserver2017连接服务器_Server_04


        以上为VS连接数据库的两个方法,欢迎各位在评论中提问,我将随时补充新内容。