C# 这些查询之间有什么区别?

C# 这些查询之间有什么区别?,c#,ms-access,C#,Ms Access,跟随 我还有一个问题: 我在SelectFeedbtn\u click的click事件中回忆起这种方法,它可以工作: public static void GetSelectedFeed(Form2 frm2) { string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString;

跟随

我还有一个问题:

我在SelectFeedbtn\u click的click事件中回忆起这种方法,它可以工作:

public static void GetSelectedFeed(Form2 frm2)
{
        string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString;

        OleDbConnection Connection = new OleDbConnection(StrCon);
        OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary", Connection);

        DataTable DTable = new DataTable();
        DataA.Fill(DTable);

        frm2.SelectedFeeddataGridView.DataSource = DTable;
}
但当我想从FeedSelectListBox获取一个ID时,DisplayMember是Feed Name/Description,ValueMember是ID,它会显示一个exeption:{条件表达式中的数据类型不匹配。}, 查询是:

public static void GetSelectedFeed(Form2 frm2)
{
        string StrCon = System.Configuration.ConfigurationManager.ConnectionStrings["FeedLibraryConnectionString"].ConnectionString;

        OleDbConnection Connection = new OleDbConnection(StrCon);
        OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = 'frm2.FeedSelectListBox.SelectedValue'", Connection);

        DataTable DTable = new DataTable();
        DataA.Fill(DTable);

        frm2.SelectedFeeddataGridView.DataSource = DTable;
}

我该怎么办?

首先,ID是一个int,所以不应该用引号传递它。您正在查询中以字符串形式传递frm2.FeedSelectListBox.SelectedValue,但应在查询中传递其值,以便对其进行计算,并使查询成为可执行的

    OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = "+frm2.FeedSelectListBox.SelectedValue, Connection);

    OleDbDataAdapter DataA = new OleDbDataAdapter("Select * from FeedLibrary where ID = "+FeedSelectedID, Connection);

您是否有错误或只是没有得到任何结果?ID可能是数字。删除它周围的单引号。从FeedLibrary中选择*,其中ID=2表示担忧,但不起作用并不能很好地描述问题。你收到错误信息了吗?崩溃例外根本没有数据?您是否验证了数据库中有一行具有该值的文本id?如果成功,现在如果列表框具有多选属性,那么应该如何编写查询以获取列表框的所有选定值?