javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

android.database.CursorIndexOutOfBoundsException:已請求索引0,大小為0

我正在使用自定義適配器擴展游標適配器以在listview中顯示數據,以顯示特定的電話號碼,我已將id傳遞給數據庫類中的方法,但它正在顯示

errorandroid.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 

在將調試器放置在該方法中之后

num = cursor.getString(cursor.getColumnIndex("ContactNumber"));

誰能幫我解決這個問題。這是代碼:

public String getNumberFromId(int id) 
{
    String num;
    db= this.getReadableDatabase();
    Cursor cursor = db.query(scheduletable, new String[] { "ContactNumber" },"_id="+id, null, null, null, null);
    cursor.moveToFirst();
    num = cursor.getString(cursor.getColumnIndex("ContactNumber")); 
    cursor.close();
    db.close();
    return num;
}
trans by 2020-02-29T16:50:12Z

visual studio-如何在SQL Server CE(精簡版)數據庫中創建外鍵關系?

Visual Studio 2005不提供用于在SQL Server CE數據庫中創建表之間關系的界面(我使用的是3.0版),據我所知,您無法使用Management Studio打開Compact Edition DB。 有任何想法嗎?

trans by 2020-02-22T23:49:14Z

python-SQLite性能基準測試-為什么:memory:這么慢...只有磁盤速度的1.5倍?

為什么在sqlite中:memory:這么慢?

我一直在嘗試查看通過使用內存中的sqlite與基于磁盤的sqlite是否可以獲得任何性能改進。 基本上,我想以啟動時間和內存為代價來獲得非常快速的查詢,這些查詢在應用程序過程中不會對磁盤造成影響。

但是,以下基準測試僅能使我提高速度1.5倍。 在這里,我正在生成一百萬行隨機數據,并將其加載到同一表的基于磁盤和內存的版本中。 然后,我在兩個數據庫上運行隨機查詢可以领救济金的游戏,返回大小約為300k的集合。 我期望基于內存的版本會更快,但是如上所述,我的速度只有1.5倍。

我嘗試了其他幾種大小的數據庫和查詢集。 :memory:的優勢似乎隨著數據庫中行數的增加而上升。 我不確定為什么優勢如此之小,盡管我有一些假設:

  • 所使用的表不夠大(行)不足以構成:內存:一個巨大的贏家
  • 更多的聯接/表將使:memory:優勢更加明顯
  • 在連接或操作系統級別進行某種緩存,以便以某種方式可以訪問以前的結果,從而破壞了基準
  • 我沒有看到某種隱藏的磁盤訪問(我還沒有嘗試過lsof,但是我確實關閉了PRAGMA的日志功能)

我在這里做錯什么了嗎? 為什么:memory:沒有產生幾乎即時的查詢? 這是基準:

==> sqlite_memory_vs_disk_benchmark.py <==
#!/usr/bin/env python
"""Attempt to see whether :memory: offers significant performance benefits.
"""
import os
import time
import sqlite3
import numpy as np
def load_mat(conn,mat):
    c = conn.cursor()
    #Try to avoid hitting disk, trading safety for speed.
    #http://stackoverflow.com/questions/304393
    c.execute('PRAGMA temp_store=MEMORY;')
    c.execute('PRAGMA journal_mode=MEMORY;')
    # Make a demo table
    c.execute('create table if not exists demo (id1 int, id2 int, val real);')
    c.execute('create index id1_index on demo (id1);')
    c.execute('create index id2_index on demo (id2);')
    for row in mat:
        c.execute('insert into demo values(?,?,?);', (row[0],row[1],row[2]))
    conn.commit()
def querytime(conn,query):
    start = time.time()
    foo = conn.execute(query).fetchall()
    diff = time.time() - start
    return diff
#1) Build some fake data with 3 columns: int, int, float
nn   = 1000000 #numrows
cmax = 700    #num uniques in 1st col
gmax = 5000   #num uniques in 2nd col
mat = np.zeros((nn,3),dtype='object')
mat[:,0] = np.random.randint(0,cmax,nn)
mat[:,1] = np.random.randint(0,gmax,nn)
mat[:,2] = np.random.uniform(0,1,nn)
#2) Load it into both dbs & build indices
try: os.unlink('foo.sqlite')
except OSError: pass
conn_mem = sqlite3.connect(":memory:")
conn_disk = sqlite3.connect('foo.sqlite')
load_mat(conn_mem,mat)
load_mat(conn_disk,mat)
del mat
#3) Execute a series of random queries and see how long it takes each of these
numqs = 10
numqrows = 300000 #max number of ids of each kind
results = np.zeros((numqs,3))
for qq in range(numqs):
    qsize = np.random.randint(1,numqrows,1)
    id1a = np.sort(np.random.permutation(np.arange(cmax))[0:qsize]) #ensure uniqueness of ids queried
    id2a = np.sort(np.random.permutation(np.arange(gmax))[0:qsize])
    id1s = ','.join([str(xx) for xx in id1a])
    id2s = ','.join([str(xx) for xx in id2a])
    query = 'select * from demo where id1 in (%s) AND id2 in (%s);' % (id1s,id2s)
    results[qq,0] = round(querytime(conn_disk,query),4)
    results[qq,1] = round(querytime(conn_mem,query),4)
    results[qq,2] = int(qsize)
#4) Now look at the results
print "  disk | memory | qsize"
print "-----------------------"
for row in results:
    print "%.4f | %.4f | %d" % (row[0],row[1],row[2])

這是結果。 請注意,對于相當大范圍的查詢大小,磁盤占用的內存大約是內存的1.5倍。

[ramanujan:~]$python -OO sqlite_memory_vs_disk_clean.py
  disk | memory | qsize
-----------------------
9.0332 | 6.8100 | 12630
9.0905 | 6.6953 | 5894
9.0078 | 6.8384 | 17798
9.1179 | 6.7673 | 60850
9.0629 | 6.8355 | 94854
8.9688 | 6.8093 | 17940
9.0785 | 6.6993 | 58003
9.0309 | 6.8257 | 85663
9.1423 | 6.7411 | 66047
9.1814 | 6.9794 | 11345

RAM是否應該相對于磁盤而言幾乎是即時的? 這是怎么了

編輯

這里有一些好的建議。

我想對我來說,主要的收獲是**可能沒有辦法使:memory:絕對更快,但是有一種方法可以使磁盤訪問相對較慢。 **

換句話說,基準測試足以衡量內存的實際性能,但不能衡量磁盤的實際性能(例如,由于cache_size編譯指示太大或因為我沒有寫數據)。 我會弄亂那些參數,并在有機會時發布我的發現。

就是說,如果有人認為我可以從內存數據庫中擠出更多的速度(除了提高我將要做的cache_size和default_cache_size之外),我全都可以...

trans by 2020-02-22T22:02:23Z

開源-有哪些出色的在線數據庫建模工具?

您最喜歡的開源數據庫設計/建模工具是什么?

我正在尋找一種支持多個數據庫的數據庫,尤其是Firebird SQL,但在Google上找不到一個。

trans by 2020-02-22T20:39:56Z

克隆MySQL數據庫

我的服務器上有120個表的數據庫。

我想用新的數據庫名稱和復制的數據克隆整個數據庫。

有有效的方法嗎?

trans by 2020-02-22T16:15:13Z

mysql-將表從一種模式移到另一種模式?

我想在mysql中將表從一種模式移動到另一種模式,有人可以告訴我該怎么做。

trans by 2020-02-22T10:05:50Z

sql-如何在oracle數據庫中輸入特殊字符,如“&”?

這個問題已經在這里有了答案:

  • 如何在從SQL Plus運行的SQL腳本中忽略“&”號?                                     7個答案

我想在插入語句中插入特殊字符&。 我的插入是:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14');

如果我嘗試運行此查詢,則會彈出一個對話框,并要求我輸入&的值。

如何在oracle db的insert語句中輸入特殊字符,如&

trans by 2020-02-22T06:17:34Z

sql-行級觸發器與語句級trigg

我很難理解“行級觸發器”和“語句級觸發器”之間的區別。

據我了解,在創建語句級別觸發器的情況下,可以修改整個表。 行級觸發器只會允許我修改受觸發器的特定事件影響的元組。

它是否正確?有人舉兩個例子嗎?

謝謝!

trans by 2020-02-21T22:25:41Z

java-在Android上簡單導出和導入SQLite數據庫

我正在嘗試為備份目的實現一個簡單的SQLite導出/導入。 導出只是存儲原始SQLite文件的副本而已。 我要導入的只是刪除舊的current.db文件,然后將imported.db文件重命名為current.db。這可能嗎? 當我嘗試此解決方案時,出現以下錯誤:

06-30 13:33:38.831: ERROR/SQLiteOpenHelper(23570):
    android.database.sqlite.SQLiteDatabaseCorruptException: error code 11: database disk image is malformed

如果我在SQLite瀏覽器中查看原始數據庫文件,則看起來很好。

trans by 2020-02-21T06:52:02Z

數據庫-數據倉庫注意事項:何時以及為什么?

這里的一些背景:

我或多或少知道什么是數據倉庫。 我已經閱讀了數十本有關數據倉庫的指南,我使用過SSAS,我知道什么是星形模式,維表和事實表,我知道ETL是什么以及如何做。 這不是一個“如何”的問題,也不是教程的要求。

我的問題是,我所閱讀的有關數據倉庫的所有材料似乎掩蓋了構建數據倉庫的基本原理。 它們全都具有比喻性,或者在某些情況下從字面上以“因此您已決定建立數據倉庫...”開頭,除非我尚未做出此決定。

因此,我希望SO成員可以指出或幫助我提出某種半客觀的測試。 我可以適應特定系統并以“是的,我們需要數據倉庫”或“否,今天的收益太小”結束。 我認為我應該能夠回答的具體問題是:

  1. 在什么時候建立數據倉庫是值得考慮的選擇? 換句話說,我應該尋找哪些明顯的跡象,指標或其他標準,這可能表明標準的交易環境已不再足夠?

  2. 完整數據倉庫的替代方案是什么? 事務數據庫中的非規范化和沼澤標準復制的“報告服務器”是我想到的兩個。 在加入DW之前,我還有什么應該探索的嗎?

  3. 為什么數據倉庫要比上述替代方案更好? 如果答案是“取決于”,那么它取決于什么?

  4. 我什么時候不應該嘗試建立數據倉庫? 我對任何被聲明為“最佳實踐”的東西都表示懷疑,而與上下文無關。 當然,在某些情況下DW是錯誤的選擇-它們是什么?

  5. 對于引入數據倉庫而得到改進的系統,我是否有實際的例子? 可以端到端地向我解釋的事情,他們需要倉庫做出什么樣的決定或分析,他們如何決定要放入什么,以及倉庫最終如何適應更大的環境? 我不想要人為的“讓我們從AdventureWorks數據庫中創建一個多維數據集”-實現與我無關,我對涉及的規范,設計和整體思考過程感興趣。

我通常不嘗試詢問多方合作伙伴,但我認為它們都是非常緊密相關的。 我愿意接受至少能解決前四個問題的任何答案,盡管最后一個問題確實可以使我明白這一點。 如果已經有人寫過相關鏈接,那么鏈接就很好,只要它們相當簡潔明了(鏈接到Ralph Kimball主頁=沒有幫助)。

希望我已經把問題弄清楚了-預先感謝您的回答!

trans by 2020-02-20T03:45:55Z

php-如何將數組存儲到mysql中?

有沒有一種方法可以將數組存儲到mysql字段中? 我正在創建一個評論評分系統,因此我想存儲用戶ID數組以防止進行多次投票。 我將創建一個新表,其中包含評論ID和對此評論進行投票的用戶ID數組。 然后,我將加入評論表和該表,并檢查當前用戶ID是否存在于選民數組或注釋中。 如果是這樣,將禁用投票圖標。 我想我會避免以這種方式在循環中使用mysql查詢。

您碰巧知道更好的方法嗎?

trans by 2020-02-19T22:49:54Z

sql-帶條件的sqlite select

我有一張帶生日日期的方桌。 我想執行查詢以選擇年齡超過30歲的那些記錄。我嘗試了以下方法,但不起作用:

select * from mytable where dob > '1/Jan/1980'
select * from mytable where dob > '1980-01-01'
trans by 2020-02-19T21:26:55Z

數據庫-MongoDB在$ addToSet的對面為'$ removeFromSet'

我知道MongoDB的$ addToSet方法,但是我在文檔中的任何地方都找不到等效的remove

實現此目標的最佳方法是什么? 嘗試實現以下目標:

obj = {
  name: 'object1
  tags: ['fus', 'ro', 'dah']
}
db.collection.update({name: 'object1'}, {$removeFromSet: { tags: 'dah'}});
trans by 2020-02-19T20:52:19Z

數據庫-嘗試創建擴展時PostgreSQL錯誤

CREATE EXTENSION postgis;

當我嘗試CREATE EXTENSION postgis;時得到的是什么,有人可以告訴我為什么會這樣,怎么辦才能解決?

trans by 2020-02-18T21:38:20Z

為什么我們需要一個時態數據庫?

我正在閱讀有關時態數據庫的內容,看來它們已經內置了時間方面的內容。 我不知道為什么我們需要這樣的模型?

它與普通的RDBMS有何不同? 我們不能擁有一個普通的數據庫,即RDBMS并說有一個將時間戳與發生的每個事務相關聯的觸發器嗎? 可能會影響性能。 但是我仍然對時態數據庫在市場上有很強的案例持懷疑態度。

當前的數據庫是否支持這種功能?

trans by 2020-02-17T14:03:38Z

數據庫-為什么使用JPA而不是直接在Java文件上編寫SQL查詢(即直接寫到JDBC)?

我一直在閱讀幾篇文章,什么是JPA (Java Persistent API)以及支持它的供應商(DataNucleus可以领救济金的游戏,JBoss Hibernate等)。

我沒有ORM(對象關系映射)的經驗。

到目前為止,我所做的就是使用DTO和DAO編寫自己的數據庫類。 到目前為止,我對我所擁有的感到滿意,但是想知道為什么人們使用JPA而不是包含SQL的Java文件。

在我看來,編寫DAO類可以像下面這樣。

public class DAOUsers {
     public void insertNewUser(DTO DtoUser) {
           String query = "INSERT INTO users(username, address) " +
                          "VALUES(DtoUser.username , DtoUser.address)";
           Executor.run(query);
     }
}

我了解到JPA使用JPQL,Java持久查詢語言,并且它針對實體對象進行操作而不是直接使用db表。

我的理解(如果我錯了,請糾正我)是這里的實體對象與我的DTO對象相同(有點像bean嗎?)

但是無論如何.. JPA相對于在我的文件中編寫純SQL的真正好處是什么?好像使用JPA所需的注釋并使SQL不可讀對我來說真的沒有吸引力。

如果您需要進一步說明,請讓我知道。我是這個主題的新手,希望聽聽您的意見。

trans by 2020-02-17T13:20:31Z

mysql-#1146-表'phpmyadmin.pma_recent'不存在

解決方案專家...

僅供參考,我正在使用xampp使用phpmyadmin。 并且在本地主機上創建數據庫的過程中會發生此錯誤。 以下是phpmyadmin目錄下config.inc文件的代碼:

<?php
$cfg['blowfish_secret'] = 'xampp'; 
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'HTTP';
$cfg['Servers'][$i]['user'] = 'root'; 
$cfg['Servers'][$i]['password'] = 'password';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Lang'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
//$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
//$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
//$cfg['Servers'][$i]['recent'] = 'pma_recent';
//$cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs';
?>
trans by 2020-02-17T02:09:56Z

為什么在理論上比實踐上更多地使用外鍵?

當您學習關系理論時,外鍵當然是必需的。 但是實際上,在我工作過的每個地方,表產品和聯接總是通過在查詢中顯式指定鍵來完成的,而不是依賴于DBMS中的外鍵。

這樣,您當然可以通過不屬于外鍵的字段聯接兩個表可以领救济金的游戏,從而產生意外結果。

你為什么這么認為呢? DBMS不應該強制聯接和產品僅由外鍵進行嗎?

編輯:感謝所有的答案。 現在我很清楚,FK的主要原因是參考完整性。 但是,如果您設計數據庫,則至少從理論上講,模型中的所有關系(ERD中的I.E.箭頭)都將成為外鍵,無論您是否在DBMS中將它們定義為外鍵,它們在語義上都是FK。 我無法想象需要通過不是FK的字段來聯接表。 有人可以舉一個有意義的例子嗎?

PS:我知道N:M關系成為單獨的表而不是外鍵的事實,為簡單起見,省略了它。

trans by 2020-02-16T22:39:46Z

更改SQL中的主鍵列

更新

這是查詢的結果約束

SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME   COLUMN_NAME  ORDINAL_POSITION
PK_history        userKey       1
PK_history        name          2

這是查詢的結果

SELECT * 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME   CONSTRAINT_TYPE  IS_DEFERRABLE  INITIALLY_DEFERRED
PK_history        PRIMARY KEY      NO             NO

結束更新

我的主機通過ASP.NET Enterprise Manager提供了到我的SQL Server數據庫的接口。

我的id表中有3列:

  • id(不允許使用鍵,整數,NULL)
  • id(鍵,字符串,不允許為NULL)
  • id(非鍵,整數,允許為NULL)

我想使id列成為唯一鍵。

為此,我相信我需要:

  1. 確保該列中的任何行都沒有NULL
  2. 將列設置為不允許NULL
  3. 將列添加為主鍵
  4. 刪除其他2列作為鍵

但是,當我使用提供的UI時,它將永遠無法工作。 有時候,它看起來就像是在嘗試做某事,但是當我刷新列的視圖時,它永遠不會改變。 它偶爾會創建一個臨時表,看起來像它試圖執行某些操作,但是永遠不會被復制/覆蓋我要更改的原始表。

當我嘗試使用查詢時,更改也不會顯示。 這是我認為我需要的查詢:

    SELECT * from history WHERE id is NULL     <---- This shows 0 results
    ALTER TABLE history
    ALTER COLUMN id int NOT NULL
    ALTER TABLE history ADD PRIMARY KEY (id)
    ALTER TABLE history
    DROP CONSTRAINT userId
    DROP CONSTRAINT name
    GO

我只是嘗試禁止NULL并為id列添加主鍵。 它似乎不起作用。 有人可以指出我正確的方向嗎? 謝謝!

trans by 2020-02-16T21:46:53Z

數據庫-在MySQL中刪除表還會刪除索引嗎?

它沒有在文檔中明確提到([http://dev.mysql.com/doc/refman/6.0/en/drop-table.html)。]我問,因為我只是在Rails項目中看到了一個奇怪的數據庫遷移, 開發人員會在刪除表之前刪除所有索引,這似乎是不必要的。

trans by 2020-02-15T19:56:04Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一頁 共31頁