String account=editTextaccount.getText().toString(); String password=editTextpassword.getText().toString(); dbHelper=new DBHelper(getActivity(),"user.db",null,1); db=dbHelper.getReadableDatabase(); db.execSQL("insert into user(account,password) values('account','password')");有没有错误
时间: 2024-02-02 10:04:27 浏览: 85
这段代码会有一个问题,即在SQL语句中插入的是字符串常量`'account'`和`'password'`,而不是变量`account`和`password`的值。正确的写法应该是使用占位符将变量的值绑定到SQL语句中的占位符上。修改后的代码如下:
```
String account = editTextaccount.getText().toString();
String password = editTextpassword.getText().toString();
dbHelper = new DBHelper(getActivity(), "user.db", null, 1);
db = dbHelper.getWritableDatabase();
String sql = "INSERT INTO user (account, password) VALUES (?, ?)";
db.execSQL(sql, new Object[]{account, password});
```
在上面的代码中,我们使用了占位符将变量`account`和`password`的值绑定到SQL语句中的占位符上,以避免SQL注入攻击。同时,我们使用了`getWritableDatabase()`方法获取可写数据库实例,以便插入数据。
相关问题
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_users); lvProductList = findViewById(R.id.product_list); etProductName = findViewById(R.id.product_name); etProductPrice = findViewById(R.id.product_price); etProductQuantity = findViewById(R.id.product_quantity); btAddProduct = findViewById(R.id.add_product); btDeleteProduct = findViewById(R.id.delete_product); btEditProduct = findViewById(R.id.edit_product); spinner = findViewById(R.id.spinner); dbHelper = new DBHelper(this); db = dbHelper.getWritableDatabase(); btAddProduct.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = etProductName.getText().toString(); float price = Float.parseFloat(etProductPrice.getText().toString()); int quantity = Integer.parseInt(etProductQuantity.getText().toString()); ContentValues values = new ContentValues(); values.put(DBHelper.COLUMN_NAME,name); values.put(DBHelper.COLUMN_PRICE,price); values.put(DBHelper.COLUMN_QUANTITY,quantity); db.insertWithOnConflict(DBHelper.TABLE_NAME,null,values,SQLiteDatabase.CONFLICT_REPLACE); updateUI(); } });
这是 `users` 类中的 `onCreate()` 方法,用于初始化用户界面。在该方法中,首先调用 `setContentView()` 方法,将用户界面的布局文件加载到该活动中。接着,使用 `findViewById()` 方法获取布局文件中定义的 UI 控件,如 `ListView`、`EditText`、`Button`、`Spinner` 等等。然后,创建一个 `DBHelper` 对象,并调用 `getWritableDatabase()` 方法获取可写的数据库。接下来,为添加按钮 `btAddProduct` 添加一个点击事件监听器,在点击按钮时将用户输入的信息插入到数据库中,并调用 `updateUI()` 方法更新 ListView 中的数据。
在这个方法中,还涉及到了一些 Android 的基本操作,如从 `EditText` 中读取用户输入的信息、将信息存储到 `ContentValues` 对象中、使用 `insertWithOnConflict()` 方法将数据插入到数据库中、使用 `updateUI()` 方法更新 ListView 中的数据等等。
id=LoginMainActivity.post_userid; userid.setText(id); if(id.equals("")||id==null){ Toast.makeText(getApplicationContext(), "请先登录!", Toast.LENGTH_SHORT).show(); intent = new Intent(setMymsgActivity.this,MyselfActivity.class); startActivity(intent); } //账号userId,密码passWord,姓名name,专业subject,电话phone,QQ号qq,地址address DatabaseHelper dbhelper = new DatabaseHelper(this); SQLiteDatabase db=dbhelper.getReadableDatabase(); usersave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {//账号userId,密码passWord,姓名name,专业subject,电话phone,QQ号qq,地址address post_name=username.getText().toString(); post_subject=usersubject.getText().toString(); post_phone=userphone.getText().toString(); post_qq=userqq.getText().toString(); post_address=useraddress.getText().toString(); ContentValues values=new ContentValues(); if(!post_name.equals("")) { values.put("name", post_name); } if(!post_subject.equals("")) { values.put("subject", post_subject); } if(!post_phone.equals("")) { values.put("phone", post_phone); } if(!post_qq.equals("")) { values.put("qq", post_qq); } if(!post_address.equals("")) { values.put("address", post_address); } saveValues(values); Toast.makeText(getApplicationContext(), "修改成功", Toast.LENGTH_SHORT).show(); intent = new Intent(setMymsgActivity.this,userMsgActivity.class); startActivity(intent); } }); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intent = new Intent(setMymsgActivity.this,userMsgActivity.class); startActivity(intent); } }); } private void saveValues(ContentValues values){ DatabaseHelper dbhelper = new DatabaseHelper(this); SQLiteDatabase db=dbhelper.getReadableDatabase(); db.update("users",values,"userId=?",new String[] {id}); db.close(); } }
这是一段 Android 开发中的 Java 代码,主要是对用户信息进行修改和保存。代码中使用了 SQLite 数据库进行数据存储,通过点击 usersave 按钮保存修改后的用户信息。如果用户未登录,则会提示用户先进行登录操作。同时,如果用户修改了某些信息,则只会保存修改后的信息。最后,根据用户的操作,跳转到不同的页面。
阅读全文