C# 如何循环使用不同的ID';用c语言实现sqlserver中的s#
我尝试在stackoverflow上搜索类似的答案,但我可能不擅长搜索。我对c#比较陌生,我正在尝试循环使用不同的ID,这样我就可以在SQL server中使用准备好的语句来运行一系列查询,循环使用这些不同的ID。我厌倦了使用while循环,但我可能做得不正确,我不确定。我知道如何使用SQL server,这不是问题所在,因为我在那里工作得很好,但我想尝试在C#中使用它,用于不同的测试目的。 这是我的密码:C# 如何循环使用不同的ID';用c语言实现sqlserver中的s#,c#,sql-server,loops,C#,Sql Server,Loops,我尝试在stackoverflow上搜索类似的答案,但我可能不擅长搜索。我对c#比较陌生,我正在尝试循环使用不同的ID,这样我就可以在SQL server中使用准备好的语句来运行一系列查询,循环使用这些不同的ID。我厌倦了使用while循环,但我可能做得不正确,我不确定。我知道如何使用SQL server,这不是问题所在,因为我在那里工作得很好,但我想尝试在C#中使用它,用于不同的测试目的。 这是我的密码: using System; using System.Data.SqlClient; u
using System;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main()
{
Console.WriteLine("Executing query...");
int i = 46556;
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (true)
{
using (SqlConnection connection = new SqlConnection("CONNECTION_STRING"))
{
connection.Open();
using (SqlCommand command = new SqlCommand(
"SELECT TOP 100 GlobalCustomerVehicleID, GlobalCustomerID, Status, VIN, LastEditByUserID, CreatedByUserID, Year, Make, Model FROM Drop_GlobalCustomerVehicle WHERE GlobalCustomerID = @ID", connection))
{
command.Parameters.Add(new SqlParameter("ID", i));
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int GlobalCustomerVehicleID = reader.GetInt32(0);
int GlobalCustomerID = reader.GetInt32(1);
string Status = reader.GetString(2);
string VIN = reader.GetString(3);
int LastEditByUserID = reader.GetInt32(4);
int CreatedByUserID = reader.GetInt32(5);
short Year = reader.GetInt16(6);
string Make = reader.GetString(7);
string Model = reader.GetString(8);
Console.WriteLine("GlobalCustomerVehicleID = {0}, GlobalCustomerID = {1}, Status = {2}, VIN = {3}, LastEditByUserID = {4}, CreatedByUserID = {5}, Year = {6}, Make = {7}, Model = {8}",
GlobalCustomerVehicleID,
GlobalCustomerID,
Status,
VIN,
LastEditByUserID,
CreatedByUserID,
Year,
Make,
Model
);
}
}
}
i = i + 10;
if (i > 47000)
break;
}
stopwatch.Stop();
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
我知道其中一些并不完全是超级安全的,比如代码中直接包含的连接字符串,但这只是出于测试目的,不会在内部测试之外使用。
有人能告诉我哪里出了问题,甚至能提出解决办法吗?谢谢你抽出时间
编辑:这是一个简单的修正,我很抱歉我的问题太笼统了!问题是我想让它实际上循环几次而不是一次。它的工作原理是只执行一个查询,但没有经过我期望的不同ID。然而,我漏掉了一个0,即使在搜索了我的代码之后,我也完全漏掉了那个非常容易犯的错误。
感谢您指出这一点,并提出了编写while循环的更为优化的方法 如果要使用多个Id进行搜索,则应使用sql中的
IN
子句
SELECT TOP 100 GlobalCustomerVehicleID, GlobalCustomerID, Status, VIN, LastEditByUserID, CreatedByUserID, Year, Make, Model FROM Drop_GlobalCustomerVehicle WHERE GlobalCustomerID IN (ID1,ID2,ID3)
与您想要实现的目标相比,具体出了什么问题?您是否遇到了错误或一些意外行为?目前还不清楚您的问题是什么,因此很难提出解决方案。“如何”不是一个很好的问题,因为可能有几种方法(因为你的问题很笼统)。你试过一种方法…你到底遇到了什么问题?顺便说一句,我不会在while(true)时使用
while,只要在while时使用(i)此循环将只执行一次。我最初是46556,当它>4700时,您将中断循环。此外,您不应该在循环的每次迭代中创建新连接。和prepared语句。prepared语句的思想是-prepare one,并为每次执行设置参数。为什么不在这里解释一下您想要实现的目标。i我猜会有其他更有效的方法来执行itAh,我道歉。这是yu_sha说的,它只执行一次,我想让代码循环一直执行到47000。我知道发生了什么,我错过了一个0,这很简单。我还将修复循环,添加哦,是的,我正在SQL Manager中的SQL Server查询中这样做我只是在制作c版本的时候忘了更改,谢谢