- 因許多人在查尋 SQL 會使用組字串或者變數的方式來進行查尋
StringBuilder sb = new StringBuilder();
sb.Append("SELECT ");
sb.Append("* ");
sb.Append("FROM ");
sb.Append("UserInfo");
static string sqlQuery
{
get
{
return "SELECT * FROM UserInfo";
}
}
- 目前查尋都是簡短,需要使用複雜的查尋或者其他行為,會使得 SQL 語法變得非常長,且不容易閱讀
- 此使用 Resource File 的特性,進行改善此方法
class User
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<user> lUser = null;
using (SqlConnection con = new SqlConnection(Info.LyndonliuConnectionString))
{
lUser = con.Query<user>(
Properties.Resources.ActionUserInfo,
commandTimeout: 0).ToList();
}
}
}
- 如需撰寫複雜的 SQL 語法(如:當資料存在進行修改,資料不存在進行新增)
- SQL Code - 修改 ActionUserInfo.sql 如下
-- EXISTS
IF EXISTS
(SELECT *
FROM UserInfo
WHERE Name = @Name)
-- UPDATE
UPDATE UserInfo
SET Age = @Age
WHERE Name = @Name;
ELSE
-- INSERT
INSERT INTO UserInfo
VALUES (@Name,
@Age);
class User
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
User user = new User { Name = "Lyndon", Age = 31 };
using (SqlConnection con = new SqlConnection(Info.LyndonliuConnectionString))
{
DynamicParameters Param = new DynamicParameters();
Param.Add("@Name", user.Name, dbType: DbType.String);
Param.Add("@Age", user.Age, dbType: DbType.Int32);
int count = con.Execute(
Properties.Resources.ActionUserInfo,
Param,
commandTimeout: 0);
}
}
}
- 此方法雖然簡化許多,並且使 SQL語法是可以閱讀,但開發者需知道 SQL 語法所撰寫的地方,才能進行修改
沒有留言:
張貼留言