簡體   English   中英

Datastax C#驅動程序未返回行數據

[英]Datastax c# driver not returning row data

我有一個簡單的列族,其中只有一行數據。 查詢表時,這是CQL Shell結果:

Connected to Test Cluster at localhost:9160.
[cqlsh 3.1.6 | Cassandra 1.2.8 | CQL spec 3.0.0 | Thrift protocol 19.36.0]

cqlsh:system> use cache

cqlsh:cache> SELECT locationid, payload FROM yellowbotcache;

 locationid | payload
------------+------------------
  f~123456x | This is a test 3

cqlsh:cache>

這是用於插入表數據然后查詢行的C#代碼:

        Cluster cluster = Cluster.Builder().AddContactPoint("127.0.0.1").Build();
        using (Session sess = cluster.Connect())
        {
            sess.Execute("INSERT INTO cache.yellowbotcache (locationid, payload) VALUES ('f~123456x', 'This is a test 3');");

            RowSet result = sess.Execute("SELECT locationid,payload FROM cache.yellowbotcache WHERE locationid = 'f~123456x';");
            var rows = result.GetRows();
            if (rows.Count() > 0)
            {
                foreach (Row row in rows)
                {
                    string payLoad = row.GetValue<string>("payload");
                }
            }
        }

行返回長度為0的單行。payload= ...語句導致“索引超出范圍”錯誤。 如果我將locationid更改為不正確的值,則查詢不會返回任何行。

關於這里發生的事情有什么想法嗎? 我上周從DataStax網站下載了Cassandra和驅動程序。

您正在嘗試兩次獲取數據。 首先,當您調用rows.Count() > 0 ,然后在迭代期間。

一旦執行並迭代,則Rows偽集合無效。 因此,最簡單的解決方案是先將所有結果復制到列表中。

嘗試這個,

var rows = rowSet.GetRows().ToList();

現在遍歷列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM