gpt4 book ai didi

c# - 从 C# 获取 sql 数据的最佳方法是什么

转载 作者:太空狗 更新时间:2023-10-29 21:00:12 24 4
gpt4 key购买 nike

我正在尝试找到最佳(快速与最简单)的方式来通过 C# 中的代码访问 SQL Server 代码。

当我从书本中学习时,我遇到了很多建议,通常告诉我通过拖放来完成。然而,由于我想在代码优先方法中做到这一点,方法是按列号获取数据,但 SQL 查询中的任何重新排序(如添加/删除列)对我来说都很难修复。

例如(别笑,有些代码像 2 岁),我什至编写了特殊函数来传递 sqlQueryResult 并检查它是否为 null:

public static void exampleByColumnNumber(string varValue) {

string preparedCommand = @"SELECT TOP 1 [SomeColumn],[SomeColumn2]

FROM [Database].[dbo].[Table]
WHERE [SomeOtherColumn] = @varValue";
SqlCommand sqlQuery = new SqlCommand(preparedCommand, Locale.sqlDataConnection);
sqlQuery.Prepare();
sqlQuery.Parameters.AddWithValue("@varValue) ", varValue);

SqlDataReader sqlQueryResult = sqlQuery.ExecuteReader();
if (sqlQueryResult != null) {
while (sqlQueryResult.Read()) {
string var1 = Locale.checkForNullReturnString(sqlQueryResult, 0);
string var2 = Locale.checkForNullReturnString(sqlQueryResult, 1);
}
sqlQueryResult.Close();
}
}

后来我发现它可以通过列名(这似乎更容易阅读多列和大量更改顺序等):

    public static void exampleByColumnNames(string varValue) {

string preparedCommand = @"SELECT TOP 1 [SomeColumn],[SomeColumn2]

FROM [Database].[dbo].[Table]
WHERE [SomeOtherColumn] = @varValue";
SqlCommand sqlQuery = new SqlCommand(preparedCommand, Locale.sqlDataConnection);
sqlQuery.Prepare();
sqlQuery.Parameters.AddWithValue("@varValue) ", varValue);

SqlDataReader sqlQueryResult = sqlQuery.ExecuteReader();
if (sqlQueryResult != null) {
while (sqlQueryResult.Read()) {
string var1 = (string) sqlQueryResult["SomeColumn"];
string var2 = (string) sqlQueryResult["SomeColumn2"];
}
sqlQueryResult.Close();
}
}

第三个例子是通过列名来做,但使用 .ToString() 来确保它不是空值,或者通过在空检查上做 If/else。

    public static void exampleByColumnNamesAgain(string varValue) {

string preparedCommand = @"SELECT TOP 1 [SomeColumn],[SomeColumn2], [SomeColumn3]

FROM [Database].[dbo].[Table]
WHERE [SomeOtherColumn] = @varValue";
SqlCommand sqlQuery = new SqlCommand(preparedCommand, Locale.sqlDataConnection);
sqlQuery.Prepare();
sqlQuery.Parameters.AddWithValue("@varValue) ", varValue);

SqlDataReader sqlQueryResult = sqlQuery.ExecuteReader();
if (sqlQueryResult != null) {
while (sqlQueryResult.Read()) {
string var1 = (string) sqlQueryResult["SomeColumn"].ToString();
DateTime var2;
DateTime.TryParse(sqlQueryResult["SomeColumn2"].ToString());

int varInt = ((int) sqlQueryResult["SomeColumn3"] == null ? 0 : (int) sqlQueryResult["SomeColumn3"];

}
sqlQueryResult.Close();
}
}

请记住,我只是为了这个例子而创建的,可能会有一些拼写错误或一些轻微的语法错误,但主要问题是哪种方法最好,哪种方法最差(我知道第一个是我最不喜欢的)。

我很快将不得不开始/重写我的 90k 行小应用程序的一部分,其中至少有 3 个广泛使用的示例,所以我想获得速度最好的方法,最好是最容易维护的(希望它是一样的方法)。

可能有一些更好的选择,所以请分享?

最佳答案

看来您可能正在看旧书。如果你打算用“老式的方式”来做,那么你至少应该使用 using block 。摘要:

using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand(commandString, connection))
{
using (var reader = command.ExecuteReader())
{
// Use the reader
}
}
}

更好的是,查看 Entity Framework .

链接:Data Developer Center

关于c# - 从 C# 获取 sql 数据的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150580/

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