发布:2023/12/7 15:39:01作者:大数据 来源:大数据 浏览次数:528
From
两者都是返回sql原生查询结果,主要执行的是查询操作
1 |
var q=_Context.Article.FromSql("select * from article where id=@id",new MySql.Data.MySqlClient.MySqlParameter("@id",1)).ToList(); |
ExecuteSqlCommand
此语句可执行sql操作,返回影响的行数,如update,delete,create等操作。
具体类似
1 |
_dbContext.Database.ExecuteSqlCommand("update member set count=0 where id=@id", new MySql.Data.MySqlClient.MySqlParameter("id", 1)); |
无论sql还是mysql都不能对表名、列名等数据对象进行参数化,想动态操作表名或列名,可以考虑以下几种参考办法:
1、直接调用sql存储过程实现
2、将表名或列名进行判断处理,然后进行字符串拼接
比如if(tableName="student") sql="update student set name=@name where id=@id";
3、对于sql server数据库,考虑使用SqlCommandBuilder Class,将转义表名并且不容易受到sql注入攻击:
SqlCommandBuilder cmdBuilder=new SqlCommandBuilder();
string tableName=cmdBuilder.QuoteIdentifier(tableName);
那么会在表名字符串或列名字符串两边加上[]如,update [student] ,如果是mysql,则需要用MySqlCommandBuilder,会转义为··。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4