1.sql server如何每10秒执行一条SQL语句
可以用
waitfor delay '000:00:10'
把这个放在要执行的语句之前,这样过10秒钟才会执行语句,结合循环操作就可以每10秒执行一次了。
这个最好和语句同时放在存储过程中,执行完语句后,再调用存储过程就可以实现循环了。
用作业调度一次就可以了,把exec p_ZQJ_YX710_I_test加在存储过程最后,另外把while循环去掉,只要自己调用自己就可以了。另外最好设置一个配置表,在其中放置一个值用来确定是否要继续循环下去,如果不想让它循环下去,只要将那个配置值改一下。否则在重新启动SQL SERVER服务之前,这个存储过程会无限循环下去,一般是不好终止的。
create proc p_ZQJ_YX710_I_test
as
declare @d datetime
INSERT Runtime.dbo.history(TagName, QualityDetail, Value, DateTime)
SELECT rtrim(t1.name), 192,t1.curval,DATEADD(ss, t1.timestamp_high, '1970-01-01 08:00:00.000') AS Expr1
FROM scadasqltest.gzweb.dbo.analog t1 where t1.name ='ZQJ_YX710_I'
waitfor delay '00:00:10'--定义等待10秒
exec p_ZQJ_YX710_I_test
2.如何直接执行SQL语句
using (SqlConnection con = new SqlConnection(System.Web.Configuration..ConnectionStrings["default"].ConnectionString))
{ SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
sqlStr = @"";
cmd.CommandText = sqlStr ;
cmd.CommandType = CommandType.Text;
gs = cmd.ExecuteNonQuery(); }
这个就是直接执行sql语句的代码!
3.如何直接执行SQL语句
1、ExecuteQuery方法 看命名,我们很容易联想到ADO.NET里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该“所思非所得”。
下面通过一个简单方法,验证我们的猜想(数据库设计可以参考这一篇): ///
// // 参数: // query: // 要执行的 SQL 查询。 // // parameters: // 要传递给命令的参数数组。
注意下面的行为:如果数组中的对象的数目小于命令字符串中已标识的最大数, 则会引发异常。如果数组包含未在命令字符串中引用的对象,则不会引发异常。
如果某参数为 // null,则该参数会转换为 DBNull.Value。 // // 类型参数: // TResult: // 返回的集合中的元素的类型。
// // 返回结果: // 由查询返回的对象的集合。 public IEnumerable
// // 参数: // elementType: // 要返回的 System.Collections.Generic.IEnumerable
如果未映射字段或属性,则结果集中应包含其名称与该字段或属性相同的列。通过先查找区分大小写的匹配来执行比较。
如果未找到匹配项,则会继续搜索不区分大小写的匹配项。如果同时满足下列所有条件,则该查询应当返回(除延迟加载的对象外的)对象的所有跟踪的字段和属性:T // 是由 System.Data.Linq.DataContext 显式跟踪的实体。
System.Data.Linq.DataContext.ObjectTrackingEnabled // 为 true。实体具有主键。
否则会引发异常。 // // query: // 要执行的 SQL 查询。
// // parameters: // 要传递给命令的参数数组。注意下面的行为:如果数组中的对象的数目小于命令字符串中已标识的最大数, 则会引发异常。
如果数组包含未在命令字符串中引用的对象,则不会引发异常。如果某参数为 // null,则该参数会转换为 DBNull.Value。
// // 返回结果: // 由查询返回的对象的 System.Collections.Generic.IEnumerable
2、ExecuteCommand方法 同样道理,这个方法立刻让我们联想到(世界没有联想,生活将会怎样?),联想到,等等,不知联想到什么。然后我们看一下方法使用说明: // // 摘要: // 直接对数据库执行 SQL 命令。
// // 参数: // command: // 要执行的 SQL 命令。 // // parameters: // 要传递给命令的参数数组。
注意下面的行为:如果数组中的对象的数目小于命令字符串中已标识的最大数, 则会引发异常。如果数组包含未在命令字符串中引用的对象,则不会引发异常。
如果任一参数为 // null,则该参数会转换为 DBNull.Value。 // // 返回结果: // 一个 int,表示所执行命令修改的行数。
publicint ExecuteCommand(string command, paramsobject[] parameters); 到这里,看它的返回类型为int,表示执行命令修改的行数,这次很容易想到ExecuteNonQuery方法。对不对呢?通过下面的代码证明我们的设想: ///
3、防止sql注入 1和2中,执行sql语句的两个方法都有一个params 类型的参数,我们又会想到ADO.NET非常重要的sql语句的参数化防止sql注入问题。下面通过一个方法,看看linq2sql可不可以防止sql注入。
(1)、直接执行拼接的sql语句(有风险) ///
转载请注明出处windows之家 » win10如何执行sql语句