我知道以前有很多关于这个主题的问题,但这些问题/答案都没有帮助.我正在创建一个Android应用程序,我有一个包含多个表的数据库.第一个成功创建,但第二个从未创建.当我稍后尝试访问该表时,它给出了"表不存在"错误.我曾多次尝试更改数据库名称,更改数据库版本,清除缓存和数据,卸载并重新安装我的应用程序.什么都行不通.我使用sqlite浏览器查看我的数据库,第二个表不存在.我已经尝试在增加版本之后onCreate在我的方法中添加断点SQLiteDatabaseOpenHelper.调试器直接通过.以下是适用的代码:First Table DBHelper:
public class SessionDescriptionsDatabaseOpenHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "database.db";
private static final String TABLE_SESSIONDESCRIPTIONS = "session_descriptions";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_TITLE = "title";
private static final String COLUMN_DESCRIPTION = "description";
public SessionDescriptionsDatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Database creation SQL statement
final String DATABASE_CREATE = "create …Run Code Online (Sandbox Code Playgroud) 我正在将应用程序从ZF1移植到ZF2,作为其中的一部分,我必须重写我们的数据库映射器.
我正在努力解决这个SQL语句:
SELECT full_name, GROUP_CONCAT(value)
FROM (
SELECT full_name, value
FROM my_table
ORDER BY id DESC
) as subtable
GROUP BY full_name
ORDER BY full_name DESC;
Run Code Online (Sandbox Code Playgroud)
我试图解决的根本问题是我需要在运行之前订购子查询的结果,GROUP_CONCAT我需要它适用于MySQL和Sqlite.在MySQL中,我可以简单地指定GROUP_CONCAT函数内的顺序,但这对于Sqlite是不可能的,所以我需要子查询才能兼容MySQL和Sqlite.
在ZF1中,我可以这样做:
$fromSql = $db->select()
->from('my_table', array('full_name', 'value'))
->order('id DESC');
$sql = $db->select()
->from(array(
'subtable' => new Zend_Db_Expr('(' . $fromSql . ')')
), array(
'full_name' => 'full_name',
'value' => new Zend_Db_Expr('GROUP_CONCAT(subtable.value)'),
)
)
->group('full_name')
->order('full_name DESC');
Run Code Online (Sandbox Code Playgroud)
但是,使用ZF2似乎不可能在from子句中使用子查询.有没有解决这个问题?
大家好我有多个插入语句的问题,我需要插入许多记录.我已经用这种方式编写,但记录没有插入"userbill"表.帮我??
..这是代码:
SQLiteDatabase db = mySQLiteHelper.getWritableDatabase();
String sql = "insert into userbill (billid, userid, date, amount, bill_status) values (?, ?, ?, ?, ?)";
db.beginTransaction();
SQLiteStatement st = db.compileStatement(sql);
try{
for(int i=0;i<Userid.length;i++)
{
st.bindLong(1, billid);
st.bindString(2, Userid[i]);
st.bindString(3, due_date);
st.bindDouble(4, amount/Userid.length);
st.bindString(5, "Due");
long entryID = st.executeInsert();
st.clearBindings();
}
db.setTransactionSuccessful();
}
catch(Exception e)
{
//e.printStackTrace();
Log.e("MYAPP", "exception", e);
}
finally
{
db.endTransaction();
}
db.close();
Run Code Online (Sandbox Code Playgroud)
logcat的:
09-05 13:12:48.610:D/dalvikvm(7982):GC_FOR_ALLOC释放314K,10%免费5030K/5568K,暂停17ms,总计18ms
09-05 13:12:48.610:I/dalvikvm-heap(7982):将堆(frag case)增长到6.181MB,用于1127532字节分配
09-05 13:12:48.614:D/dalvikvm(7982):GC_FOR_ALLOC释放2K,9%免费6129K/6672K,暂停5ms,总计5ms
09-05 13:12:48.710:W/EGL_genymotion(7982):eglSurfaceAttrib未实现
09-05 13:12:57.014:I/SQLiteConnectionPool(7982):/data/data/com.perfect12.app2maintain/databases/AMTDB的连接池已关闭,但仍有1个连接正在使用中.当他们被释放回游泳池时,他们将被关闭.
09-05 13:12:57.286:W/EGL_genymotion(7982):eglSurfaceAttrib未实现
我刚为Cordova安装了这个SQLlite插件:
https://github.com/brodysoft/Cordova-SQLitePlugin
我想以JSON数组的形式返回结果,所以我尝试了这个:
db.transaction(function(tx) {
tx.executeSql("select * from dialed_calls;", [], function(tx, res) {
console.log("tx object " +JSON.stringify(tx));
console.log("res object " +JSON.stringify(res));
});
});
Run Code Online (Sandbox Code Playgroud)
问题是返回的对象中没有一个包含来自列的响应值.
例如res对象返回:
{"rows":{"length":12},"rowsAffected":0}
Run Code Online (Sandbox Code Playgroud)
问题是:
如何将重新调整的行作为JSON数组获得结果?
谢谢你的帮助.
我正在尝试执行查询,但我的总和部分遇到了麻烦.我有表A和表B.我想从表A中总结一列,其中表A和表B中的2列是相同的,并且属于相同的日期和班次.然而,总结包括表B以及某种方式.我不知道为什么会这样.我该怎么做才能它只对表A求和,但仍然包括表B的条件.任何帮助都非常感谢.谢谢.
SELECT Sum (a.TotalLbs)
FROM TableA a
INNER JOIN TableB b
ON a.Wic = b.Wic
WHERE a.DateTime = b.DateTime
AND a.Shift = b.Shift
Run Code Online (Sandbox Code Playgroud) 我是第一次使用sqlite,所以我在使用codeigniter 2.2配置它时遇到了问题.
我把我的sqlite数据库放在: - application/config/sqlite/sqlite-database.db
我的配置是: -
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = 'sqlite/sqlite-database.db';
$db['default']['dbdriver'] = 'sqlite';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
我无法连接到数据库
我有这个代码来从SQLite表中获取计数:
internal static bool TableExistsAndIsNotEmpty(string tableName)
{
int count;
string qry = String.Format("SELECT COUNT(*) FROM {0}", tableName);
using (SQLiteConnection con = new SQLiteConnection(HHSUtils.GetDBConnection()))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand(qry, con);
count = (int)cmd.ExecuteScalar();
}
return count > 0;
}
Run Code Online (Sandbox Code Playgroud)
当它运行时,我得到" 无效的强制转换异常 "
很明显,从查询返回的值是一个int,也就是记录的数量(我运行查询时得到"2",即Sqlite浏览器中的"SELECT COUNT(*)FROM WorkTables") .
那么在这里被无效投入的是什么?
作为一种旁注,我知道最好使用查询参数,我在这里找到了如何在Windows应用商店中执行此操作[ 如何在WinRT应用中使用SQLite查询参数?,但不知道如何在一个旧的(Windows窗体/ Windows CE)应用程序中执行此操作.
我认为会是这样的:
string qry = "SELECT COUNT(*) FROM ?";
using (SQLiteConnection con = new SQLiteConnection(HHSUtils.GetDBConnection()))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand(con);
count = cmd.ExecuteScalar(qry, tableName);
}
Run Code Online (Sandbox Code Playgroud)
......但我尝试编译的类似之处.
给定像这样wort的表中的列中的条目woerter
henlo
oenlh
olneh
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个sqlite命令,列出所有word包含的条目h e l o(例如,实际上这些字母总是不同) - 按此顺序.所以在这个例子中结果应该是
henlo
因为有
heñlo
换句话说:选择字符串中某处的所有条目h,之后有一个e,l和o.它不需要在它之后,而是在它之后的某个地方.例如:
ssssshssssssessssssslsssossssso
会在结果中,
ssosssssossssshssssssesssssssls
不会.
到目前为止我的方法:
SELECT*FROM woerter WHERE wort LIKE'h%'AND wort LIKE'%e%'AND wort LIKE'%l%'AND wort LIKE'%o'
这是有缺陷的,因为它没有正确地整合e和l的顺序,它需要h和o在开头和结尾.
我正在开发一个小应用程序,它将位置纬度和经度存储在SQLite数据库中.我有三个课程如下:
AddPlaceActyivity.java
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.example.rememberthislocation.R;
public class AddPlaceActivity extends Activity{
Button btn_remember,btn_maps;
Fragment fr;
Button addlocation;
EditText locationname;
String mylocationname,mylatitude,mylongitude;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.d("my","In oncreateview");
setContentView(R.layout.remember_fragment);
addlocation = (Button)findViewById(R.id.btn_addlocation);
locationname = (EditText)findViewById(R.id.locationname);
mylocationname = locationname.getText().toString();
Log.d("my","value 1 taken");
mylatitude = "0.0";
mylongitude = "0.0";
Log.d("my", "data values taken");
addlocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MySqliteHelper db …Run Code Online (Sandbox Code Playgroud) http://flask.pocoo.org/docs/0.10/patterns/sqlite3/
我明白了:NameError:未定义全局名称'connect_to_database'
真的不能确定应该在哪里定义?
sqlite ×10
android ×3
sql ×2
bulkinsert ×1
c# ×1
casting ×1
codeigniter ×1
cordova ×1
database ×1
flask ×1
insert ×1
java ×1
json ×1
mysql ×1
php ×1
python ×1
sql-server ×1
windows-ce ×1
zend-db ×1