很惭愧,身为大三的软件工程学生我居然连数据库的连接都记不清楚……还是老老实实的开个记录吧。
材料
- 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给我省掉了,真是轻松。完成后执行成功的结果如下图:
关于附加数据库
有时候我们会希望使用SSMS中已经创建好的数据库,在这里我再补充关于如何导入外部数据库的方法。
1、首先我们要先确认数据库的版本,高版本数据库不被支持使用
巨硬神奇的自己不兼容自己的毛病在这里发挥的淋漓尽致,版本号高于2015的全部连接失败。我曾希望通过修改兼容性来解决它,遗憾的是VS还是会说你版本号过高。所以这里唯一的处理方式就是创建低版本号的数据库文件。
- 创建低版本数据库方法如下(附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法):右键单击数据库 -> 选择“任务” -> 选择“生成脚本”,在“设置脚本编写选项”的高级中找到“服务器版脚本”这一选项,选择低版本的数据库。之后一路点击确定和完成,数据库脚本就自动生成好了。之后打开低版本数据库,执行该脚本即可。
2、设置数据库及其日志文件权限
在拥有一个符合要求的数据库后,我们还需要修改数据库文件(.mdf)及其日志文件(.ldf)的权限。右键单击mdf文件 -> 选择“属性” -> 选择“安全”选项卡 -> 选择“高级”,你会看到这个画面:
在这里,如果你发现主体那一栏没有“Authenticated Users”,你就点击添加,点击上方的“选择主体”,把Authenticated Users复制进去后确定,选择“完全控制”,之后点击确定,保存我们刚才做的修改。
如果你已经有了“Authenticated Users”但是它没有“完全控制”这一权限,那这是因为它创建时继承了父类文件的权限。点击下方的“禁用继承”,选择第一项,之后按上面的操作修改权限即可。
3、创建连接
在完全获取权限后,我们就可以创建数据库与项目的连接了。【建议连接之前先将数据库移动到App_Data这个文件夹下】右键单击“App_Data”文件夹 -> 选择“添加” -> 选择“现有项”,找到你的数据库文件双击(此处不用点击日志文件,导入数据库后它会自动附加进来),你的数据库就会自动附加进来了。这样操作有个好处,VS会自动创建到该数据库的连接,如果你想检查该连接是否成功,右键单击数据库后点击“刷新”即可。
以上为VS连接数据库的两个方法,欢迎各位在评论中提问,我将随时补充新内容。