none
ACC数据库查询,在数据库中查有1820条,而用OleDbDataAdapter只查出0条,为什么 RRS feed

  • 问题

  • using(var adap = new OleDbDataAdapter("select [mobel] from [choice test example] where [mobel] Like '*≤≥*'",
    @"provider=Microsoft.ace.oledb.12.0;data source="+ZGGJ.DiZhiTou+"醚芪考试题.accdb")) adap.Fill(dt0);
    wen_ju.Text=dt0.Rows[new Random().Next(dt0.Rows.Count-1)][0].ToString();

    结果 dt0条目数量0,而把句子复制到ACC数据库中执行能查出1820条。

    为什么

    2022年5月3日 0:02

答案

  • 换了一种方法,成功了。

    var adap = new OleDbDataAdapter($"select [mobel] from [choice test example] ",@"provider=Microsoft.ace.oledb.12.0;data source ="+ZGGJ.DiZhiTou+"醚芪考试题.accdb");
    	adap.Fill(dt0);
    dr=dt0.Select("[mobel] like '*≤≥*'");//先查出全部,再从中筛选行

    所以不是转义符的毛病。

    • 已标记为答案 czhch 2022年5月6日 23:49
    2022年5月6日 23:49

全部回复

  • using(var adap = new OleDbDataAdapter("select [mobel] from [choice test example] where [mobel] Like '*≤≥*'",
    @"provider=Microsoft.ace.oledb.12.0;data source="+ZGGJ.DiZhiTou+"醚芪考试题.accdb")) adap.Fill(dt0);
    wen_ju.Text=dt0.Rows[new Random().Next(dt0.Rows.Count-1)][0].ToString();

    结果 dt0条目数量0,而把句子复制到ACC数据库中执行能查出1820条。

    为什么

    您好 czhch,

    以下是关于 OleDbDataAdapter  如何使用c#操作数据库的官方示例:

    public static OleDbDataAdapter CreateDataAdapter(string selectCommand,
        OleDbConnection connection)
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);
    
        adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    
        // Create the Insert, Update and Delete commands.
        adapter.InsertCommand = new OleDbCommand(
            "INSERT INTO Customers (CustomerID, CompanyName) " +
            "VALUES (?, ?)");
    
        adapter.UpdateCommand = new OleDbCommand(
            "UPDATE Customers SET CustomerID = ?, CompanyName = ? " +
            "WHERE CustomerID = ?");
    
        adapter.DeleteCommand = new OleDbCommand(
            "DELETE FROM Customers WHERE CustomerID = ?");
    
        // Create the parameters.
        adapter.InsertCommand.Parameters.Add("@CustomerID",
            OleDbType.Char, 5, "CustomerID");
        adapter.InsertCommand.Parameters.Add("@CompanyName",
            OleDbType.VarChar, 40, "CompanyName");
    
        adapter.UpdateCommand.Parameters.Add("@CustomerID",
            OleDbType.Char, 5, "CustomerID");
        adapter.UpdateCommand.Parameters.Add("@CompanyName",
            OleDbType.VarChar, 40, "CompanyName");
        adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
            OleDbType.Char, 5, "CustomerID").SourceVersion =
            DataRowVersion.Original;
    
        adapter.DeleteCommand.Parameters.Add("@CustomerID",
            OleDbType.Char, 5, "CustomerID").SourceVersion =
            DataRowVersion.Original;
    
        return adapter;
    }

    我相信它可以帮助到您。

    Best Regards,

    Jiale


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2022年5月3日 5:42
  •  Like '*≤≥*'
    你查一下是不是这个转义符在代码中无效导致查询无结果返回?

    family as water

    2022年5月5日 6:20
  • 换了一种方法,成功了。

    var adap = new OleDbDataAdapter($"select [mobel] from [choice test example] ",@"provider=Microsoft.ace.oledb.12.0;data source ="+ZGGJ.DiZhiTou+"醚芪考试题.accdb");
    	adap.Fill(dt0);
    dr=dt0.Select("[mobel] like '*≤≥*'");//先查出全部,再从中筛选行

    所以不是转义符的毛病。

    • 已标记为答案 czhch 2022年5月6日 23:49
    2022年5月6日 23:49