gpt4 book ai didi

c# - 在 C# 中存储来自 SQL 的结果

转载 作者:行者123 更新时间:2023-11-30 20:35:01 25 4
gpt4 key购买 nike

我正在尝试运行 SQL 查询来收集数据并写入数组。我希望能够使用此数组稍后运行一些 if 语句以查看检索到的数据是否满足所需的某些要求。我是 C# 的新手,如果有更好的方法,请指出正确的方向。这是我目前所拥有的:

public static class DBconnect
{

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

public static void sqlConnect()

{
var qSql = "Select con.FIRSTNAME, Con.LASTNAME, Con.EMAIL, Act.USERFIELD1 'SerialNumber', ACT.ACCOUNT, TTC.SOFTWAREMAINTENANCE, TTC.HARDWAREMAINTENANCE " +
"from CONTACT CON Inner join ACCOUNT ACT on ACT.ACCOUNTID = CON.ACCOUNTID " +
"Inner join TTCONTRACTS TTC on TTC.ACCOUNTID = ACT.ACCOUNTID " +
"Where Con.EMAIL is not null and Act.USERFIELD1 is not null and " +
"ISNUMERIC(Act.USERFIELD1) = 1 and con.EMAIL like '%@%'";

//Creates connection to sql database
string connectionString = null;
SqlConnection cnn;
connectionString = @"Data Source=DESKTOP-MO813OQ\SalesLogic; Initial Catalog=SalesLogix_Pull; Integrated Security = True";
cnn = new SqlConnection(connectionString);
//Sql command to run the query's
SqlCommand query = new SqlCommand(qSql, cnn);

QueryResults[] allRecords = null;

using (query)
{
cnn.Open();
using (var reader = query.ExecuteReader())
{
var list = new List<QueryResults>();
while (reader.Read())
list.Add(new QueryResults
{
FIRSTNAME = reader.GetString(0),
LASTNAME = reader.GetString(1),
EMAIL = reader.GetString(2),
SERIALNUMBER = reader.GetInt32(3),
ACCOUNT = reader.GetString(4),
USERFIELD1 = reader.GetInt32(5),
SOFTWAREMAINTENANCE = reader.GetBoolean(6),
HARDWAREMAINTENANCE = reader.GetBoolean(7)
});
allRecords = list.ToArray();
}

try
{
cnn.Close();
MessageBox.Show("Connection Closed");
}
catch (Exception)
{
MessageBox.Show("Error has occured.");
}
}


}


}

class QueryResults
{
public string FIRSTNAME { get; set; }

public string LASTNAME { get; set; }

public string EMAIL { get; set; }

public int USERFIELD1 {get; set;}

public int SERIALNUMBER { get; set; }

public string ACCOUNT { get; set; }

public bool SOFTWAREMAINTENANCE { get; set; }

public bool HARDWAREMAINTENANCE { get; set; }
}

当我运行它时,我通常会遇到这些错误:

在这部分代码的 System.Data.dll 中发生类型为“System.InvalidCastException”的未处理异常:

list.Add(new QueryResults
{
FIRSTNAME = reader.GetString(0),
LASTNAME = reader.GetString(1),
EMAIL = reader.GetString(2),
SERIALNUMBER = reader.GetInt32(3),
ACCOUNT = reader.GetString(4),
USERFIELD1 = reader.GetInt32(5),
SOFTWAREMAINTENANCE = reader.GetBoolean(6),
HARDWAREMAINTENANCE = reader.GetBoolean(7)
});

如有任何帮助或指点,我们将不胜感激!

最佳答案

您的某些数据列可能没有返回您预期的输出,例如空值。

试试这个

if(!reader.IsDBNull(colIndex))
return reader.GetString(colIndex);
else
return string.Empty;

如果这不起作用,您可以尝试调试哪个列有问题并提供更多信息。

希望这对您有所帮助。

关于c# - 在 C# 中存储来自 SQL 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com