嘿家伙我有一个recyclerview适配器,它填充了cardview上的一些数据列表.我在卡片布局的右下角创建了一个三点菜单,它实际上会从recyclerview中删除卡片行,并且还会从存储行数据的sqlite数据库中删除该项目.问题是我无法弄清楚如何将实现删除的方法集成到recyclerview ViewHolder中.这是源代码
public class BeneficiaryRecyclerAdapter extends RecyclerView.Adapter<BeneficiaryRecyclerAdapter.BeneficiaryViewHolder> {
private List<Beneficiary> listBeneficiary;
public ImageView overflow;
private Context mContext;
public BeneficiaryRecyclerAdapter(){
}
public BeneficiaryRecyclerAdapter(List<Beneficiary> listBeneficiary, Context mContext) {
this.listBeneficiary = listBeneficiary;
this.mContext = mContext;
}
@Override
public BeneficiaryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// inflating recycler item view
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_beneficiary_recycler, parent, false);
return new BeneficiaryViewHolder(itemView);
}
@Override
public void onBindViewHolder(final BeneficiaryViewHolder holder, int position) {
holder.textViewName.setText(listBeneficiary.get(position).getName());
holder.textViewEmail.setText(listBeneficiary.get(position).getEmail());
holder.textViewAddress.setText(listBeneficiary.get(position).getAddress());
holder.textViewCountry.setText(listBeneficiary.get(position).getAddress());
holder.overflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPopupMenu(holder.overflow); …Run Code Online (Sandbox Code Playgroud) 目前我的数据库已经填满了1000行.
我想选择前100行,然后选择下一个100,然后选择下一个100,依此类推......
到目前为止,我有:
c.execute('SELECT words FROM testWords')
data = c.fetchmany(100)
Run Code Online (Sandbox Code Playgroud)
这允许我获得前100行,但是,我找不到使用另一个SELECT语句选择接下来的100行的语法.
我已经看到它可以用其他编码语言,但还没有找到Python的SQLite3的解决方案.
我想用此查询返回的行填充WTForms SelectField:
cur.execute("SELECT length FROM skipakke_alpin_ski WHERE stock > 0")
Run Code Online (Sandbox Code Playgroud)
该查询返回具有不同类型滑雪板的滑雪板长度的行。cur.fetchall()返回以下元组:
[(70,), (75,), (82,), (88,), (105,), (115,), (125,), (132,), (140,), (150,), (160,), (170,)]
Run Code Online (Sandbox Code Playgroud)
我将如何将这些数字添加到中SelectField,以便每个滑雪板长度成为其自己的可选选择?如果我手动完成此操作,则将执行以下操作:
ski_size = SelectField('Ski size', choices=['70', '70', '75', '75'])
Run Code Online (Sandbox Code Playgroud)
...对于所有不同的长度,依此类推。
我正在使用Library greendao将数据类型保存到本地数据库.设置实体并运行应用程序后,在api响应中添加了一个新属性.它变成了这样的东西.之前:
@Entity
public class Data{
@Id
long id;
String name;
String detail;
}
Run Code Online (Sandbox Code Playgroud)
后:
@Entity
public class Data{
@Id
long id;
String name;
String detail;
String image;
}
Run Code Online (Sandbox Code Playgroud)
更新数据类型后,我重新安装了应用程序,然后运行应用程序,但是android.database.sqlite.SQLiteException出错:没有这样的列:T.IMAGE(代码1):,编译时:SELECT T."_ id",T. "NAME",T."DETAIL",T."图像"来自"DATA"T
我该如何解决这个问题?
这是我的查询的简化版本.它在SQLite中运行没有问题,但在MYSQL中却不是这样.
错误:'on子句'中的未知列'tab2.key'
SELECT
tab2.key AS remarksId,
tab1.sessionDate AS date,
tab1.sessionStart AS startTime
FROM
table1 AS tab1,
table2 AS tab2,
table3 AS tab3,
table4 AS tab4
INNER JOIN
table5 AS tab5
ON
tab5.remarkId = tab2.key
WHERE
tab1.userId='<anyNumber>' AND
tab2.objectiveId='<anyKey>' AND
tab1.reportId=tab2.reportId AND
tab1.reportId=tab3.key AND
tab4.key=tab3.sortieId
ORDER BY date, startTime;
Run Code Online (Sandbox Code Playgroud)
不幸的是,把列放在"没有帮助".
我不确定是否将列'密钥'命名为一个好的做法(MYSQL关键字),但由于现有的安装,我必须以某种方式处理这个问题.为了快速测试,我重命名了"关键"列,但也没有任何成功.
非常感谢
伙计我正在使用sqlite3和python tkinter作为前端.数据库很简单,有两个字段,用户名和密码.我想进行注册注册页面.其中两个字段中给出的数据存储在sqlite3数据库中.数据正确插入.但是,当数据库中已存在提供的用户名时,我想显示一个消息框.我尝试了下面的代码.
我的代码:
def signup():
userID = username.get()
passwd = password.get()
conn = sqlite3.connect('test.db')
c = conn.cursor()
result = c.execute("SELECT * FROM userstable")
for i in result:
if i[0] == userID:
messagebox.showerror("DUPLICATE", "USER ALREADY EXISTS!")
else:
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("INSERT INTO userstable VALUES (?, ?)", (userID, passwd))
conn.commit()
c.close()
conn.close()
username.delete(0,END)
password.delete(0,END)
username.focus()
messagebox.showinfo("SUCCESS", "USER CREATED SUCCESSFULLY")
Run Code Online (Sandbox Code Playgroud)
这可以工作,但仍然会在错误消息之后存储重复数据.如果用户名已经可用,我的要求是抛出错误并停止执行.如果用户名不可用,则应插入数据.
我哪里错了?有人可以通过指出来解释我,还是有其他方法可以达到这个目的?看来我需要修改一些功能.请指导我.
编辑1
如果我尝试使用三个条件,则休息不起作用.
我的代码
def data_entry():
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('CREATE TABLE IF …Run Code Online (Sandbox Code Playgroud) 我在ionic2中使用Sqlite进行编码,但我接受此错误"无法打开数据库cordova_not_available".我怎么解决这个问题
Thanx寻求帮助.
我的错误(无法打开数据库cordova_not_available)
我的守则;
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { SQLite, SQLiteObject } from '@ionic-native/sqlite';
import { TabsPage } from '../pages/tabs/tabs';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage:any = TabsPage;
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
platform.ready().then(() => {
statusBar.styleDefault();
splashScreen.hide();
let db = new SQLite();
db.create({
name: "iothook.db",
location: "default"
}).then((db1:SQLiteObject) => {
db1.executeSql("CREATE TABLE IF …Run Code Online (Sandbox Code Playgroud) 我知道synchronized关键字make方法一次只能在单个类上运行.但这是问题所在.
我有一个带有方法的数据库类,例如insertAccount,updateSetting等等.如果我制作insertAccount,updateSetting同步,它们中的每一个都只能在一个线程上运行.
如果有一个整个数据库的方法,它会很棒,但没有一个.如果一个线程调用insertAccount而另一个线程调用updateSetting 的同时,它会坏了吧?
因为这些方法中只有一种可以随时运行.那我该怎么办?
有没有办法应用类似synchronized全班的东西?因此,如果第一个线程同时调用insertAccount第二个线程并且第二个线程调用updateSetting,则第二个线程必须等到第一个线程完成访问数据库.
我正在制作一个小应用程序,以读取一些txt文件并将其导入设备上的SQLite数据库。
问题是,当我正确读取和导入文件时,应用在执行该方法时会冻结。我想显示进度条或类似的内容,但是由于这个问题,我什么也做不了。
这是导入方法代码:
private void importFilesFromTxt() {
bd = helper.getWritableDatabase();
File directorio = getExternalStoragePublicDirectory(DIRECTORY_DOWNLOADS);
File file = new File(directorio, "art01.txt");
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
String[] parts;
String sql = "delete from Articulos";
bd.execSQL(sql);
while ((line = br.readLine()) != null) {
if (line.length() != 328) {
parts = line.split("\\#+");
Articulo arti = new Articulo(Integer.parseInt(parts[0]), parts[1], quitarEspaciosInt(parts[2]), quitarEspaciosInt(parts[3])
, convertirDecimal(parts[4]), quitarEspaciosInt(parts[5]), quitarEspaciosInt(parts[6]), quitarEspaciosFloat(parts[7]), quitarEspaciosInt(parts[8]));
helper.addArticulo(arti);
}
}
bd.close();
br.close();
} catch (IOException e) {
System.out.println(e.toString());
} …Run Code Online (Sandbox Code Playgroud) 我正在两个数据库设置中测试Django(v1.11.4)应用程序:1)在docker容器中运行的postgres数据库或2)sqlite3 as(默认数据库)
当使用--keepdb选项运行测试时,我观察到这两种设置的不同行为:对于postgres --keepdb按预期工作(没有数据库创建并且运行测试很快)但是对于sqlite3数据库--keepdb似乎不起作用(对于每次运行的测试都有创建数据库).是否可以--keepdb使用sqlite3?如果是这样,任何设置可能会影响上述行为?
sqlite ×10
python ×3
android ×2
java ×2
mysql ×2
cardview ×1
django ×1
flask ×1
greendao ×1
inner-join ×1
ionic2 ×1
jdbc ×1
postgresql ×1
sql ×1
synchronized ×1
testing ×1
tkinter ×1
typescript ×1
wtforms ×1