c ++ MySql Connector Query即使出错也总是返回true

时间:2016-03-03 14:17:59

标签: c++ mysql error-handling

我在c ++应用程序中使用MySql C ++ Connector最新版本 但是我对任何表做的每个查询都返回true

E.x。代码:

using Nest;
using System;
using System.Collections.Generic;
using System.Threading;

namespace ElasticBoost
{
class Program
{
    static void Main(string[] args)
    {
        var node = new Uri("http://localhost:9200");

        var settings = new ConnectionSettings(node)
            .DefaultIndex("boosting")
            .DefaultTypeNameInferrer(s => s.Name);


        var client = new ElasticClient(settings);
        var theList = new List<TheBoostingClass>
        {
            new TheBoostingClass
            { Important ="bomb",
            LessImportant = "kruka",
            Garbage = "kalkon"
            },

            new TheBoostingClass
            { Important ="kalkon",
            LessImportant = "bomb",
            Garbage = "bomber"
            },

            new TheBoostingClass
            { Important ="kruka",
            LessImportant = "bomber",
            Garbage = "bomb"
            }
        };

        if (client.IndexExists("boosting").Exists)
            client.DeleteIndex("boosting");

        client.CreateIndex("boosting");

        client.Map<TheBoostingClass>(m => m
            .AutoMap()
            .Properties(p => p
                .String(s => s
                    .Name(n => n.Important)
                    .Boost(30)
                    )
                )
            );

        client.IndexMany(theList);
        Thread.Sleep(1000);
        Console.WriteLine("Index Complete");

        var x = client.Search<TheBoostingClass>(s => s
             .Query(q => q
                 .Wildcard(w => w
                     .Field("_all")
                     .Value("*bomb*")
                     )
                 )
            );
        foreach (var v in x.Documents)
            Console.WriteLine(v.Important);
        Console.ReadLine();
    }
}
[ElasticsearchType]
public class TheBoostingClass
{
    public string Important { get; set; }
    public string LessImportant { get; set; }
    public string Garbage { get; set; }
}
}

上面的代码返回true但是在我的testtbl中没有id = 2数据,我只输入了一个数据,即id = 1 Name = MyTests

有没有人知道解决这个问题的方法?

我试图将returnValue =&#34; true&#34;在try语句中, 我也在catch错误函数中使用了exit(1)函数 没有得到我想要的returnValue为false,这是上述代码的正确返回

1 个答案:

答案 0 :(得分:1)

当没有数据需要更新时,这不是一个例外情况。如果连接到数据库或SQL查询语法不正确,将抛出SQLException。

Statement类有executeUpdate()方法,返回受影响的行数,可以用它来实现你的目标。