列名无效 | C#
Invalid Column Name | C#
我正在尝试弄清楚如何使用 C# 从数据库中收集数据。
我被困在 SQL 命令上,我真的不知道如何修复它。
我的错误是:无效的列名
这是我的数据库:
MyDatabase
这是我的连接class:
namespace CarDAL
{
public class ConnectionClass
{
private string Connectionstring =
"MYCONNECTIONSTRING";
public List<string> SoortSelectList(string KarakterSoort)
{
KarakterSoort = "Defensive";
List<string> soortList = new List<string>();
using (SqlConnection connection = new SqlConnection(Connectionstring))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Karakter WHERE KarakterSoort = Defensive", connection))
{
using (IDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
soortList.Add(dr.GetValue(0).ToString());
soortList.Add(dr.GetValue(1).ToString());
}
}
}
}
return soortList;
}
我认为问题出在哪里,但我不知道(也找不到)适合我的问题的解决方案。
您的 WHERE
子句:
WHERE KarakterSoort = Defensive
将 KarakterSoort
列中的值与 Defensive
列中的值进行比较。
这真的是你想要的吗???
很可能,您想与字符串文字进行比较 - 然后您需要将其放入 单引号 中,如下所示:
WHERE KarakterSoort = 'Defensive'
现在您要选择 KarakterSoort
列包含 值 Defensive
的所有行
或者,如果您将来可能想要与其他值进行比较 - 在查询字符串中使用 参数 :
WHERE KarakterSoort = @DesiredValue
并声明它
cmd.Parameters.Add("@DesiredValue", SqlDbType.VarChar, 100);
并在 运行 命令之前设置它的值:
cmd.Parameters["@DesiredValue"].Value = "Defensive";
我正在尝试弄清楚如何使用 C# 从数据库中收集数据。 我被困在 SQL 命令上,我真的不知道如何修复它。 我的错误是:无效的列名
这是我的数据库: MyDatabase
这是我的连接class:
namespace CarDAL
{
public class ConnectionClass
{
private string Connectionstring =
"MYCONNECTIONSTRING";
public List<string> SoortSelectList(string KarakterSoort)
{
KarakterSoort = "Defensive";
List<string> soortList = new List<string>();
using (SqlConnection connection = new SqlConnection(Connectionstring))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Karakter WHERE KarakterSoort = Defensive", connection))
{
using (IDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
soortList.Add(dr.GetValue(0).ToString());
soortList.Add(dr.GetValue(1).ToString());
}
}
}
}
return soortList;
}
我认为问题出在哪里,但我不知道(也找不到)适合我的问题的解决方案。
您的 WHERE
子句:
WHERE KarakterSoort = Defensive
将 KarakterSoort
列中的值与 Defensive
列中的值进行比较。
这真的是你想要的吗???
很可能,您想与字符串文字进行比较 - 然后您需要将其放入 单引号 中,如下所示:
WHERE KarakterSoort = 'Defensive'
现在您要选择 KarakterSoort
列包含 值 Defensive
或者,如果您将来可能想要与其他值进行比较 - 在查询字符串中使用 参数 :
WHERE KarakterSoort = @DesiredValue
并声明它
cmd.Parameters.Add("@DesiredValue", SqlDbType.VarChar, 100);
并在 运行 命令之前设置它的值:
cmd.Parameters["@DesiredValue"].Value = "Defensive";