我正在为 sqlite3 使用 python 绑定,我正在尝试执行这样的查询
表格1
col1 | col2
------------
aaaaa|1
aaabb|2
bbbbb|3
Run Code Online (Sandbox Code Playgroud)
测试文件
def get_rows(db, ugc):
# I want a startswith query. but want to protect against potential sql injection
# with the user-generated-content
return db.execute(
# Does not work :)
"SELECT * FROM table1 WHERE col1 LIKE ? + '%'",
[ugc],
).fetchall()
Run Code Online (Sandbox Code Playgroud)
有没有办法安全地做到这一点?
预期行为:
>>> get_rows('aa')
[('aaaaa', 1), ('aaabb', 2)]
Run Code Online (Sandbox Code Playgroud) 我有一个orders带有 id和color列的表,id 是唯一的列。
| id | color |
| ---- | ----- |
| 1 | Red |
| 2 | Red |
| 3 | Green |
| 4 | Green |
| 5 | Blue |
| 6 | Blue |
Run Code Online (Sandbox Code Playgroud)
我希望得到id他们color组中最大的所有行,查询结果应该是
| 2 | Red |
| 4 | Green |
| 6 | Blue |
Run Code Online (Sandbox Code Playgroud)
如何使用 Sqlite3(开发环境)和 PostgreSQL 9.3(生产环境)在 rails 环境中查询正确结果
谢谢。
我正在使用ServiceStack.Ormlite v3.9.71并拥有以下代码段,我在其中打开 Ormlite SQLite 事务,假设我想在代码中其他地方的命令中使用此事务:
var connFactory = new OrmLiteConnectionFactory("ConnectionString", SqliteOrmLiteDialectProvider.Instance)
using (IDbConnection db = connFactory.Open()) // using var doesn't make a difference
using (IDbTransaction tran = db.OpenTransaction()) // using var or even db.BeginTransaction() doesn't make a difference
{
// I do lots of boring stuff
...
// Somewhere else in the code
using (var cmd = db.CreateCommand())
{
cmd.Transaction = tran; // get an error
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到:
A first chance exception of type 'System.InvalidCastException' occurred in …Run Code Online (Sandbox Code Playgroud) 我有一张表存储产品的ID,价格和可用性.我想首先根据最低价格列出产品,但这些产品应该可用.价格较低但不可用的产品应按照可能价格较高但可用的产品下方的分类顺序列出.
假设这是表中的数据
id | price | availability
8247|16690.0|true
8247|16500.0|true
8247|16000.0|false
8247|15999.0|false
Run Code Online (Sandbox Code Playgroud)
我想要一个查询,它以这种形式返回数据
id | price | availability
8247|16500.0|true
8247|16690.0|true
8247|15999.0|false
8247|16000.0|false
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点 ?
表模式是
sqlite> .schema pricecomparison
CREATE TABLE `pricecomparison` (`availability` VARCHAR , `id` VARCHAR , `price` VARCHAR );
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Android SQLite上创建一个本地数据库,但每次我尝试创建我在我的logcat上得到这个异常,为什么会发生这种情况?我已经删除了应用程序并以新的方式运行...
private static final int DATABASE_VERSAO = 1;
public static final String DATABASE_NAME = "STARA_DB";
private static final String TB_CLIENTE = "Table de Clientes";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase database;
private static final String TAG = "DBAdapter";
String TabelaClientes = "CREATE TABLE "
+ TB_CLIENTE
+ "(ID_CLIENTE PRIMARY KEY NOT NULL AUTOINCREMENT, "
+ "KUNNR TEXT, "
+ "NAME1 TEXT );";
public ClienteDAO(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private class …Run Code Online (Sandbox Code Playgroud) 我正在尝试sqlite使用更新表execSQL.但是,执行后它清除(清空)我的整个表数据而不是更新某些字段.我的代码是
private void updatedata(String name,String spingender,String cWeight,String spinunit,String htInString,String spingoal,String spinactivity,String spinexercise,String scalorie,String sprotein,String carbohydrate,String sfat) {
DatabaseHandler helper = new DatabaseHandler(getApplicationContext());
SQLiteDatabase db = helper.getReadableDatabase();
System.out.println("in update data "+name + spingender + cWeight);
String Query = "SELECT * FROM login WHERE name ='"+name+"'";
Cursor QueryCursor = db.rawQuery(Query,null);
// there is some record available in the cursor
if (QueryCursor.moveToFirst()) {
db.execSQL("UPDATE login SET gender='"+spingender+"',weight='"+cWeight+"',userunit='"+spinunit+"',height='"+htInString+"',goal='"+spingoal+"',activeness='"+spinactivity+"',exercise='"+spinexercise+"',calorie='"+scalorie+"',fat='"+sfat+"',carbohydrate='"+carbohydrate+"',protein='"+sprotein+"'");
}
QueryCursor.close();
db.close();
}
Run Code Online (Sandbox Code Playgroud)
完整代码
package com.bharatwellness.mainactivities;
import java.io.ByteArrayOutputStream;
import org.json.JSONObject;
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的活动实现executeUpdate查询.但是我收到此错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.techfrk.fetchinboxsms.Database_CustomTransaction.executeUpdate(java.lang.String)' on a null object reference
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public class AddTransaction extends Activity implements OnItemSelectedListener, View.OnClickListener, OnItemClickListener
{
DateFormat formate = DateFormat.getDateInstance();
Calendar calendar = Calendar.getInstance();
ImageButton imgbtn_personal,imgbtn_debitCredit,imgbtn_transferAnother,imgbtn_incomeExpense,calendarimg;
Button dialogButton;
Database_CustomTransaction mydb1;
Boolean personal_flag=true, debitCredit_flag=true, transferAccount=true, incomeExpense=true;
String transaction_type = "No type selected !";
public static final String list_prefs = "PreferencesFile";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_transaction);
imgbtn_personal = (ImageButton) findViewById(R.id.personal_business);
imgbtn_debitCredit = (ImageButton) findViewById(R.id.debit_credit_refund);
imgbtn_transferAnother = (ImageButton) findViewById(R.id.transfer_another_acc);
imgbtn_incomeExpense = …Run Code Online (Sandbox Code Playgroud) 我在这里写一下,询问是否有办法让Python在for循环中自动创建新的唯一变量,在下面显示的代码的上下文中:
for row in customerdetails2:
AA10 = Entry(CustomerEdit)
AA10.insert(0, row[0])
AA10.grid(row = editnum, column = 0)
AA11 = Entry(CustomerEdit)
AA11.insert(0, row[1])
AA11.grid(row = editnum, column = 1)
AA12 = Entry(CustomerEdit)
AA12.insert(0, row[2])
AA12.grid(row = editnum, column = 2)
AA13 = Entry(CustomerEdit)
AA13.insert(0, row[3])
AA13.grid(row = editnum, column = 3)
AA14 = Entry(CustomerEdit)
AA14.insert(0, row[4])
AA14.grid(row = editnum, column = 4)
Run Code Online (Sandbox Code Playgroud)
所以基本上对于Python在customerdetails2(它收集信息的数据库)中找到的每一行,我希望它创建一组新的输入字段,但是变量的名称不同,而不是所有的输入字段都被称为'AA10', 'AA11','AA12'等.这可能吗?如果没有,是否有合理的替代方案可以达到相同的效果?抱歉,我仍然是Python的新手,但提前感谢.
我正在尝试用数据库制作一个简单的应用程序.问题是,由于某种原因,应用程序在启动时崩溃.可悲的是,崩溃日志并没有告诉我很多,除了创建数据库似乎有问题,但也许有人在这里可以理解它.提前致谢!
主要活动
package se.welovecode.wdmmg;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.format.Time;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity {
DBAdapter myDB;
EditText etTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
openDB();
}
protected void onDestroy(){
super.onDestroy();
closeDb();
}
private void openDB(){
myDB = new DBAdapter(this);
myDB.open();
}
private void closeDb(){
myDB.close();
}
public void onClick_AddRecord(View v){
myDB.insertRow("transaction","item","sum");
}
}
Run Code Online (Sandbox Code Playgroud)
将对DBAdapter
package se.welovecode.wdmmg;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; …Run Code Online (Sandbox Code Playgroud) 这是我的SQLiteHandler类代码的一部分。
public class SQLiteHandler extends SQLiteOpenHelper implements DataKeyLists {
private static final String TAG = SQLiteHandler.class.getSimpleName();
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "users";
// Login table name
private static final String TABLE_USER = "user";
// query to create a login table
private static final String QUERY_CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_USER
+ "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_UID …Run Code Online (Sandbox Code Playgroud)