一、连接数据库
1.Standard Security:
Server=myServerAddress;DataBase=mDataBase;User Id=myUsername;Password=Password
简写:
Server=myServerAddress;DataBase=mDataBase;uid=myUsername;pwd=Password
2.Trusted Connection:
Server=myServerAddress;DataBase=mDataBase;Trusted_Connection=True
一般是自己电脑上的可以这样用,当然,也可以直接用第一种方式登录。
当要连接本机的时候,Server的名称可以直接写一个点.或者localhost
Server=.;DataBase=mDataBase;Trusted_Connection=True
Server=localhost;DataBase=mDataBase;Trusted_Connection=True
即
Server=myServerAddress;DataBase=mDataBase;uid=myUsername;pwd=Password
二、Dapper的使用
dapper是一款ORM框架。
1.安装Dapper
2.在对应文件中引用命名空间,using Dapper;
3.查询
using (IDbConnection db=new SqlConnection(connString))
{
//用@作为参数
string sql = $"select * from Person where LastName=@LastName";
persons = db.Query(sql,new { LastName=lastName}).ToList();
//显然,这里的匿名对象,纯粹就是为了弄一个参数而已,此参数与sql语句中的@参数相对应
}
用@作为参数,可以防止出现sql注入问题,比如说:
sql语句是这样的:select * from Person where FirstName='Stanley' or '1'='1',
那么我们搜出来的结果应该是所有记录,就是说第一个单引号和最后一个单引号中间的内容会被认为都是lastname参数的值:Stanley' or '1'='1
再来一个例子,根据id来查询记录,同样的,query中的第二个参数是匿名对象,只是用来传递personID这个参数的。
public Person SearchByID(int personID)
{
using (IDbConnection db=new SqlConnection(DBHelper.ConnString))
{
string searchSql = "select * from Person where ID=@ID";
return db.Query(searchSql,new { ID=personID}).FirstOrDefault();
}
}
4.插入
public bool InsertData(Person person)
{
using (IDbConnection db=new SqlConnection(DBHelper.ConnString))
{
//准备插入的sql语句
string sql = "insert into Person(FirstName,LastName,EmailAddress,CreatedOn) values" +
"(@FirstName,@LastName,@EmailAddress,@CreatedOn)";
//调用dapper中的IDbConnection的扩展方法excute来执行插入操作
return db.Execute(sql, person)>0; //第一个参数是sql语句,第二个参数是person对象
}
}
5.更新
public void UpdatePerson(Person person)
{
using (IDbConnection db=new SqlConnection(DBHelper.ConnString))
{
string sql = "update Person set FirstName=@FirstName,LastName=@LastName,EmailAddress=@EmailAddress where ID=@ID";
db.Execute(sql, person);
}
}
6.删除
public void DeleteByID(int personId)
{
using (IDbConnection db = new SqlConnection(DBHelper.ConnString))
{
string sql = "delete from Person where ID=@id";
db.Execute(sql, new { id=personId});
}
}
注意:经测试,若是自定义的类,比如Person,的构造器是带参数的,那么由数据库生成对应的Person的时候是会报错的,
这个时候,需要在构造器中设置一个空的默认构造器,这样就可以成功生成了。。即:
public Person()
{
}