【发布时间】:2015-10-14 02:26:05
【问题描述】:
我需要编写一个在一天中的特定时间自动运行的批处理文件,并且我从论坛中获得了许多运行良好的解决方案,但在我的情况下,我需要编写相当复杂的 SQL 查询,我说明了我的 c# 代码需要运行,我需要在 SQL 查询中使用它
我的 C# 代码如下所示:
public void mark_absent()
{
int userid = 0, Last_rec = Last_Record();
bool isapproved;
cmd = new SqlCommand("select top(1) UserID,IsApproved from tblUser ", conn);
conn.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
userid = Convert.ToInt32(dr["UserID"].ToString());
isapproved = Convert.ToBoolean(dr["IsApproved"].ToString());
dr.Close();
conn.Close();
}
else
{
dr.Close();
conn.Close();
}
for (int i = userid; i <= Last_rec; i++)
{
cmd = new SqlCommand("select UserID,IsApproved from tblUser where UserID='" + userid + "' and IsApproved='True'", conn);
conn.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
dr.Close();
conn.Close();
cmd = new SqlCommand("select UserID,AtnDate from tblAttend where convert(date,AtnDate)='" + DateTime.Now.Date + "' and UserID='" + userid + "'", conn);
conn.Open();
dr = cmd.ExecuteReader();
if (dr.Read())
{
conn.Close();
dr.Close();
//count++;
}
else
{
dr.Close();
conn.Close();
cmd = new SqlCommand("insert into tblAttend (AtnDate,CheckIn,ChkOut,Status,Workhrs,ExtraHrs,UserID,CrtUpDate) values ('" + DateTime.Now + "','00:00:00','00:00:00','Absent','00:00:00','-09:00:00','" + userid + "','" + DateTime.Now + "')", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
else
{
conn.Close();
dr.Close();
}
userid = userid + 1;
}
}
在批处理文件中我发现只有选择或删除或插入命令,但在这里我需要 sqldatareader 以及循环
那么我如何在 SQL 查询中编写这个 c# 代码。如果我错了,你们会建议我什么是最好的解决方案......?
感谢您的帮助。
【问题讨论】:
-
这个问题不清楚。您是在问如何在 C# 中运行 SQL,如何从批处理文件执行程序,如何安排批处理文件或程序定期执行?
-
要简单地安排一些事情,请使用 Windows 任务计划程序。
-
无需创建与上述代码类似的过程......
-
嗯,这根本不是你问题的主题,我有没有提到你的问题不清楚?
-
我投票结束这个问题,因为 StackOverflow 不是“为我做我的工作”服务
标签: c# sql .net sql-server