我正在寻找一个数据库引擎,它最适合存储数千条记录.我首先想使用MySQL,因为我最了解它,但我想得到强有力的答案.
我需要预定义的列,数据库可以小到10 MB,或者作为10 GB的"大"数据,如果该引擎快速读取(插入可能会慢一些),那将会很酷.我不需要快速全文搜索或正则表达式搜索.举个例子 - 通过从链接中提取的slug选择项目.
我之前看过这个网站,但我仍然不知道什么是最适合我的选择.
所以这是我的问题:哪种数据库引擎最适合我的用途?
我正在尝试使用SQLite作为我的存储空间.我已经使用nuget和using语句添加了引用dll.
我有
private void SetConnection()
{
sql_con = new SQLiteConnection
("Data Source=c:\\Dev\\MYApp.sqlite;Version=3;New=False;Compress=True;");
}
private void ExecuteQuery(string txtQuery)
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery();
sql_con.Close();
}
Run Code Online (Sandbox Code Playgroud)
我正在发送这样的查询文本
public void Create(Book book)
{
string txtSqlQuery = "INSERT INTO Book (Id, Title, Language, PublicationDate, Publisher, Edition, OfficialUrl, Description, EBookFormat) ";
txtSqlQuery += string.Format("VALUES (@{0},@{1},@{2},@{3},@{4},@{5},@{6},@{7},{8})",
book.Id, book.Title, book.Language, book.PublicationDate, book.Publisher, book.Edition, book.OfficialUrl, book.Description, book.EBookFormat);
try
{
ExecuteQuery(txtSqlQuery);
}
catch (Exception ex )
{
throw new Exception(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
我的数据库正确创建并传递了具有有效数据的书籍实例.但是在这行代码上执行查询总是抛出异常:
sql_cmd.ExecuteNonQuery(); …Run Code Online (Sandbox Code Playgroud) 有关CursorWindowAllocatoinException的SO有很多问题:
所有这些都表明光标必须在使用后关闭.但这并没有解决我的问题.这是我的代码:
String query = "select serial from tbl1 union select serial from tbl2 union select serial from tbl3";
SQLiteDatabase db = null;
Cursor cur = null;
try {
SettingsDatabaseHelper dal = new SettingsDatabaseHelper(
c);
db = dal.getReadableDatabase();
cur = db.rawQuery(query, null);
int numRows = cur.getCount();
if (numRows > 0) {
cur.moveToFirst();
int serialIdx = cur.getColumnIndexOrThrow("serial");
for (boolean hasItem = cur.moveToFirst(); hasItem; hasItem = cur
.moveToNext()) {
String serial = cur.getString(serialIdx);
if …Run Code Online (Sandbox Code Playgroud) 我想将图像存储在我的数据库中.另外,我想检查图像和标题是否已存在于数据库中.如果是这样,它将不会将它们添加到数据库中.这是我的班级.
景点
public class Attractions extends ListActivity {
DataBaseHandler db = new DataBaseHandler(this);
ArrayList<Contact> imageArry = new ArrayList<Contact>();
List<Contact> contacts;
ContactImageAdapter adapter;
int ctr, loaded;
int [] landmarkImages={R.drawable.oblation,R.drawable.eastwood,R.drawable.ecopark,R.drawable.circle};
String []landmarkDetails = { "Oblation", "Eastwood", "Ecopark", "QC Circle"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_attractions);
ctr = db.checkContact(landmarkDetails[loaded]);
// get image from drawable
/**
* CRUD Operations
* */
// Inserting Contacts
Log.d("Insert: ", "Inserting ..");
for(loaded=0; loaded <landmarkDetails.length;loaded++){
Bitmap image …Run Code Online (Sandbox Code Playgroud) 我正在使用来自https://github.com/oysteinkrog/SQLite.Net-PCL的PCL版本的Sqlite.net
但是,我无法进行数据库连接设置.该SQliteAsyncConnection确实不像原来的版本不是一个字符串(路径DB),但[Func< SQLiteConnectionWithLock>.]2
怎么用这个?一般来说:如何使用这个库?我有一个核心PCL lib,可以完成iOS,Android和WP8项目的所有业务逻辑.我的理解是我可以将Sqlite-Net Async PCL放入我的PCL lib中.但似乎我必须提供一些特定于平台的东西才能让它发挥作用.
如何从所有列中获取所有值?
我试过这个代码:
values.add(rs.getString(number));
Run Code Online (Sandbox Code Playgroud)
其中number是rowcount.
但它只给了我最后一列的所有值.
我需要从每列中获取值,然后将其添加到arraylist中.
这是我的完整代码:
// The column count starts from 1
int number = 0;
for ( i = 1; i < columnCount + 1; i++ ) {
number++;
ColumnNames = rsmd.getColumnName(i);
ar.add(ColumnNames);
System.out.println(ar);
}
model.setColumnCount(columnCount);
while ( rs.next() ) {
// values.add(rs.getString(ar.indexOf(i)));
values.add(rs.getString(number));
System.out.println(values);
model.addRow(new Object[] {value1, value2, value3, value4});
}
Run Code Online (Sandbox Code Playgroud) 我正在使用SQLite数据库而且我经常得到运行时错误,我无法找到它的起源.在查询之后,我使用moveToFirst指向检索到的第一条记录,这有时会触发android.database.CursorWindowAllocationException异常.添加到此异常的是以下句子:"2048kb的游标窗口分配失败.#open Cursors = 736(#cursors opendby this proc = 736)".
在Android文档中,我还没有找到任何与此异常相关的内容.有谁知道它的原因和避免它的方法?
在创建新表时遇到一些问题.当我使用CREATE TABLE命令时,我的新表格应该如此形成,但当我退出活动时,应用程序崩溃,我在logcat中获得了一个TABLE ALREADY EXISTS.如果我使用CREATE TABLE IF NOT EXISTS,则不会形成新表,只是将新的数据行添加到上一个表中,并且不会崩溃.这有什么问题?我想添加表没有它给我已经存在,我希望它添加没有它添加行到不同的表.
SqliteHelper类:
public class MySQLiteHelper extends SQLiteOpenHelper {
public static final String TABLE_NAME = MainActivity.NameName;
public static final String COLUMN_ID = "_id";
public static final String COLUMN_COMMENT = "comment";
public static final String COLUMN_LAT = "lat";
public static final String COLUMN_LONG = "long";
public static final String COLUMN_RADI = "radi";
private static final String DATABASE_NAME = "spraylogs.db";
private static final int DATABASE_VERSION = 1;
public static final String NEWTABLE = "CREATE TABLE " …Run Code Online (Sandbox Code Playgroud) 我遇到了SQLite的问题(版本3.7.13,如果有关系).
我创建了一个包含两列foo和bar的新表,数据类型未定义.当我尝试插入数字时,它工作正常.当我插入文本时,"错误:没有这样的列"发生.
sqlite> CREATE TABLE test (foo, bar);
sqlite> .tables
test
sqlite> insert into test values (0,1);
sqlite> select * from test;
0|1
sqlite> insert into test values (a,b);
Error: no such column: a
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢.
我有一个sqlite数据库的问题.它似乎不支持完整的波斯语/阿拉伯语字符.当我基于波斯字符搜索某些字段时,大多数时候Sqlite无法识别那些字符.
我通过从HTML文件中复制数据将数据插入数据库.所以当我输入字符串和搜索时,没有结果显示.但如果我复制字符串和搜索,它的工作原理.
HTML文件中的字符串是:
"احكامخمس"
键入的字符串是:
"احکامخمس"
sqlite ×10
android ×5
java ×3
c# ×2
cursor ×2
sql ×2
.net ×1
arabic ×1
bitmap ×1
create-table ×1
database ×1
memory ×1
memory-leaks ×1
mysql ×1
node.js ×1
persian ×1
resultset ×1
select-query ×1
xamarin.ios ×1