android sqlite 查询报错
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference;


    报错的是这一行  :     db = helper.getWritableDatabase();

1个回答

你有空指针,看看是不是有没有实例化的,db或者是helper

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android SQLite查询报错
在运行查询语句时,报错语法错误: inal Cursor c = getContentResolver().query( Provider.GAME_URI, new String[]{"CASE WHEN " +DBHelper.COLUMN_CRE_USER + " = " + preferences.getInt(LoginScreen.ID, 0) + " THEN (" + DBHelper.COLUMN_CRE_PTS + " AS you AND " + DBHelper.COLUMN_CON_PTS + " AS them) ELSE (" + DBHelper.COLUMN_CON_PTS + " AS you AND " + DBHelper.COLUMN_CRE_PTS + " AS them)"},"turn = ?", new String[] { preferences.getInt(LoginScreen.ID, 0) + ""}, null); 报的错: 04-24 19:57:48.345: E/AndroidRuntime(18775): Caused by: android.database.sqlite.SQLiteException: near "AS": syntax error (code 1): , while compiling: SELECT CASE WHEN createduser = 112 THEN (createdplayerpts AS you AND connectedplayerpts AS them) ELSE (connectedplayerpts AS you AND createdplayerpts AS them) FROM game WHERE (turn = ?)
android中sqlite一直报错
在应用中用到sqlite,创建了一些表,代码如下: db.execSQL("CREATE TABLE IF NOT EXISTS " + GAMES_HISTORY_TABLE+ " (" + GAME_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT, " + RIGHT_DRILLS + "INTEGER NOT NULL, " + NUM_OF_DRILLS + "INTEGER NOT NULL, " + GAME_DATE + "DATE);" ); 添加记录的代码: public long addScore(int totalDrills, int numberOfRightDrills) { ContentValues cv = new ContentValues(); cv.put(RIGHT_DRILLS, numberOfRightDrills); cv.put(NUM_OF_DRILLS, totalDrills); Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); cv.put(GAME_DATE, dateFormat.format(date)); return dataBase.insert(GAMES_HISTORY_TABLE, null, cv); } 常变量的声明如下: private static final String GAMES_HISTORY_TABLE = "scoers"; private static final String GAME_KEY = "game_id"; private static final String RIGHT_DRILLS = "number_of_rihgt_drill"; private static final String NUM_OF_DRILLS = "total_drill"; private static final String GAME_DATE = "game_date"; 然后在logcat中获得下面异常: 01-13 20:13:45.485: D/szipinf(658): Initializing inflate state 01-13 20:13:47.375: D/szipinf(658): Initializing inflate state 01-13 20:13:47.485: I/Database(658): sqlite returned: error code = 1, msg = table scoers has no column named game_date 01-13 20:13:47.495: E/Database(658): Error inserting game_date=13-01-2013 20:13:47 total_drill=4 number_of_rihgt_drill=0 01-13 20:13:47.495: E/Database(658): android.database.sqlite.SQLiteException: table scoers has no column named game_date: , while compiling: INSERT INTO scoers(game_date, total_drill, number_of_rihgt_drill) VALUES(?, ?, ?); 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1569) 01-13 20:13:47.495: E/Database(658): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426) 01-13 20:13:47.495: E/Database(658): at com.simplemathgame.GameDB.addScore(GameDB.java:83) 01-13 20:13:47.495: E/Database(658): at com.simplemathgame.Results.onCreate(Results.java:99) 01-13 20:13:47.495: E/Database(658): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-13 20:13:47.495: E/Database(658): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 01-13 20:13:47.495: E/Database(658): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 01-13 20:13:47.495: E/Database(658): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-13 20:13:47.495: E/Database(658): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 01-13 20:13:47.495: E/Database(658): at android.os.Handler.dispatchMessage(Handler.java:99) 01-13 20:13:47.495: E/Database(658): at android.os.Looper.loop(Looper.java:123) 01-13 20:13:47.495: E/Database(658): at android.app.ActivityThread.main(ActivityThread.java:3683) 01-13 20:13:47.495: E/Database(658): at java.lang.reflect.Method.invokeNative(Native Method) 01-13 20:13:47.495: E/Database(658): at java.lang.reflect.Method.invoke(Method.java:507) 01-13 20:13:47.495: E/Database(658): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-13 20:13:47.495: E/Database(658): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-13 20:13:47.495: E/Database(658): at dalvik.system.NativeStart.main(Native Method) 01-13 20:13:47.495: I/Database(658): sqlite returned: error code = 1, msg = no such column: sent 01-13 20:13:47.495: W/System.err(658): android.database.sqlite.SQLiteException: no such column: sent: , while compiling: SELECT sent FROM feedback 01-13 20:13:47.495: W/System.err(658): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1235) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189) 01-13 20:13:47.506: W/System.err(658): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1271) 01-13 20:13:47.506: W/System.err(658): at com.simplemathgame.GameDB.isFeedbackGiven(GameDB.java:117) 01-13 20:13:47.506: W/System.err(658): at com.simplemathgame.Results.onCreate(Results.java:100) 01-13 20:13:47.506: W/System.err(658): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-13 20:13:47.506: W/System.err(658): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 01-13 20:13:47.506: W/System.err(658): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 01-13 20:13:47.506: W/System.err(658): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-13 20:13:47.515: W/System.err(658): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 01-13 20:13:47.515: W/System.err(658): at android.os.Handler.dispatchMessage(Handler.java:99) 01-13 20:13:47.515: W/System.err(658): at android.os.Looper.loop(Looper.java:123) 01-13 20:13:47.515: W/System.err(658): at android.app.ActivityThread.main(ActivityThread.java:3683) 01-13 20:13:47.515: W/System.err(658): at java.lang.reflect.Method.invokeNative(Native Method) 01-13 20:13:47.515: W/System.err(658): at java.lang.reflect.Method.invoke(Method.java:507) 01-13 20:13:47.515: W/System.err(658): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-13 20:13:47.515: W/System.err(658): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-13 20:13:47.515: W/System.err(658): at dalvik.system.NativeStart.main(Native Method) 01-13 20:13:47.525: W/db(658): problem
Android 数据库查询报错
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])' on a null object reference 报错行代码:Cursor cursor = mSQLiteDatabase.rawQuery("select * from users",null);
安卓中使用SQlite报错
创建一个数据库,根据返回值设置textView值。然后报错:`"SYNTAX ERROR(code1) "` 代码: package com.example.dbex; import java.sql.SQLOutput; import java.sql.SQLPermission; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DBHandler extends SQLiteOpenHelper { public static final int DATABASE_VERSION=1; public static final String DATABASE_NAME="contactsmanager"; public static final String TABLE_CONTACTS="contacts"; public static final String KEY_ID="id"; public static final String KEY_NAME="name"; public static final String KEY_NUMBER="number"; public DBHandler(Context context) { super(context,DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub String CREATE_TABLE_CONTACTS="CREATE TABLE"+TABLE_CONTACTS+"("+KEY_ID+"INTEGER PRIMARY KEY,"+KEY_NAME+"TEXT,"+KEY_NUMBER+"TEXT"+")"; db.execSQL(CREATE_TABLE_CONTACTS); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS"+TABLE_CONTACTS); onCreate(db); } public void addContact(Contacts contacts) { SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(KEY_NAME, contacts.getname()); values.put(KEY_NUMBER, contacts.getnumber()); db.insert(TABLE_CONTACTS,null,values); db.close(); } public Contacts getContact(int id) { SQLiteDatabase db=this.getReadableDatabase(); Cursor c=db.query(TABLE_CONTACTS, new String[]{KEY_ID,KEY_NAME,KEY_NUMBER},KEY_ID+"=?",new String[]{String.valueOf(id)}, null, null, null, null); if(c!=null) { c.moveToFirst(); } Contacts contacts=new Contacts(Integer.parseInt(c.getString(0)),c.getString(1),c.getString(2)); return contacts; } public void deleteContact(Contacts contacts) { SQLiteDatabase db=this.getWritableDatabase(); db.delete(TABLE_CONTACTS, KEY_ID+"=?", new String[]{String.valueOf(contacts.getID())}); ``db.close(); } }
Android运行报错:no such table
Android报错:no such table.Android程序运行以后,改变SQLite数据库中的内容,就是新添加了一个表,再次运行后报错,找不到新添加的表。如何解决?求大神赐教。
android sqlite数据写入数据的时候,主界面会卡主,怎么解决?
android 使用xutils访问网络获取json串,然后解析插入android本地的sqlite数据库, 在执行写入数据库的时候 ,主界面会卡主,做其他操作会报错ANR,怎么解决,sqlitexu 要写入的数据6万条左右,大概要40分钟,主界面就卡40分钟。
android sqlite的问题
select id,password from teacher; 查询结果有重复的会报错嘛
SQLite查询数据之后传过去报错,不知道该怎么办了
~~~~~~~~~~~~~~~~~~~~~~~~detailed类~~~~~~~~~~~~~~~~~~~~ import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.baidu.mapapi.SDKInitializer; import entity.point; public class detailed extends Activity { private ImageView img; private TextView lng; @Override protected void onCreate(Bundle savedInstanceState,SQLiteHelper msh,int pointId) { super.onCreate(savedInstanceState); setContentView(R.layout.self_layout); img = (ImageView)findViewById(R.id.vr); img.setOnClickListener(new ImageView.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(detailed.this,panorama.class); startActivity(intent); } }); point lngText = SQLiteHelper.getdetailedById(msh,1); lng = (TextView)findViewById(R.id.lngText); lng.setText("lngText"); } } ~~~~~~~~~~~~~~~~~~SQLiteHelper类~~~~~~~~~~~~~~~~~~~~~~ /** * 根据ID查询所有信息 * @return 返回一个对象s */ public static point getdetailedById(SQLiteHelper msh,int pointId) { point po = new point(); SQLiteDatabase db = msh.getWritableDatabase(); Cursor cursor = db.rawQuery( "select lng,lat,direction,uniformity,temperature,dustproof,material,metope,door,illumination," + "type from vr_point where pointID = " + pointId, null); if (cursor.moveToFirst()) { do { po.setLng(cursor.getDouble(0)); po.setLat(cursor.getDouble(1)); po.setDirection(cursor.getString(2)); po.setUniformity(cursor.getString(3)); po.setTemperature(cursor.getString(4)); po.setDustproof(cursor.getString(5)); po.setMaterial(cursor.getString(6)); po.setMetope(cursor.getString(7)); po.setDoor(cursor.getString(8)); po.setIllumination(cursor.getString(9)); po.setType(cursor.getString(10)); } while (cursor.moveToNext()); } cursor.close(); return po; } 报错!不知道怎么写了,改了很多次。求救,十万火急,赶着交差[图片说明](https://img-ask.csdn.net/upload/201603/22/1458654196_340606.png)
sqlite 报错 no such column,请问错在哪?
String sqlcar = "create table if not exists cardinformation(id integer primary key autoincrement not null, name varchar, sno varchar," + "gender varchar, department varchar, cardCode varchar, state varchar, imgUrl varchar,img BLOB)"; db.execSQL(sqlcar); ContentValues values = new ContentValues(); ByteArrayOutputStream os = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); values.put("img", os.toByteArray()); String[] arr= new String[1]; arr[0] = strings[1]; long i = WelcomeActivity.db.update("cardinformation",values,"cardCode = ?",arr); Caused by: android.database.sqlite.SQLiteException: no such column: img (code 1): , while compiling: UPDATE cardinformation SET img=? WHERE cardCode = ?
Android sqlite 把用户名和其他表关联起来
现在做了一个登陆注册的功能,这是数据库的一个表 又做了一个功能类似日记的纪录功能,如何将这两个表关联起来,实现每人在登陆之后都看到的是自己的日记纪录,而不是所有人日记纪录? 表的格式是表1 id username password 表2 id notename notecontent date username 定义一个全局变量 让他在注册后=注册时username 然后写日记或者看日记的时候将表2的username等于这个全局变量 可行吗? 为什么代码会报错?求分析 下面是代码 public static String ANAME = null; NotesDB.ANAME = username.getText().toString().trim(); Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_LONG).show(); adapter.changeCursor(dbRead.query(NotesDB.TABLE_NAME_NOTES, null, "username=NotesDB.ANAME", null, null, null, null)); } 最后一段会报错
android studio sqlite数据库,sqlite error: no such table:user
sqlite总是报错,(安装到真机)。databases里面也有表,把它导出,在DB Broswer里却看不到数据。 ![图片说明](https://img-ask.csdn.net/upload/201907/22/1563776644_924445.png) ![图片说明](https://img-ask.csdn.net/upload/201907/22/1563776842_633436.png)![图片说明](https://img-ask.csdn.net/upload/201907/22/1563776853_202929.png)![图片说明](https://img-ask.csdn.net/upload/201907/22/1563776864_605326.png)![图片说明](https://img-ask.csdn.net/upload/201907/22/1563776889_876108.png)![图片说明](https://img-ask.csdn.net/upload/201907/22/1563776906_474787.png)
android有关sqlite数据库创建问题
刚开始做android,碰到了数据库sqlite的问题,把数据库连接和创建表的代码打在一起,就是照着菜鸟教程上的代码打的,也不报错,运行也没问题,但是就是什么都没有,请教一下各位谁能告诉我是怎么回事?![图片说明](https://img-ask.csdn.net/upload/201606/17/1466169168_292632.jpg)![图片说明](https://img-ask.csdn.net/upload/201606/17/1466169191_727154.jpg)
android建表报错no such column: touxiang
新加了一个iIMAGE以后数据库报错,只有图中这么一行错 下面是我数据库的代码 package com.mlchelper.db; import java.sql.Blob; import com.mlchelper.dom.Infor_table; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.widget.EditText; public class DBInfor { private static final String DB_NAME = "person.db"; private static final String PERSON_TABLE = "peopleinfo"; private static final int DB_VERSION = 1; public static final String in_ID = "_id"; public static final String iPHONE="pnumber"; public static final String iNAME="username"; public static final String iPASSWORD="password"; public static final String iHOBBY="hobby"; public static final String iBIRTH="birth"; public static final String iIMAGE="touxiang"; private SQLiteDatabase db; private final Context context; private DBOpenHelper dbOpenHelper; public DBInfor(Context _context) { context = _context; } /** Close the database */ public void close() { if (db != null){ db.close(); db = null; } } /** Open the database */ public void open() throws SQLiteException { dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION); try { db = dbOpenHelper.getWritableDatabase(); } catch (SQLiteException ex) { db = dbOpenHelper.getReadableDatabase(); } } /* * 数据添加功能,及插入数据 */ public long insert( Infor_table person){ ContentValues newvalues=new ContentValues(); newvalues.put(iPHONE,person.phonenumber); newvalues.put(iNAME,person.username); newvalues.put(iBIRTH, person.birth); newvalues.put(iHOBBY, person.hobby); newvalues.put(iPASSWORD, person.password); newvalues.put(iIMAGE, person.image); return db.insert(PERSON_TABLE, null, newvalues); } /* * 查询全部表格信息 */ public Infor_table[] queryAllData(){ Cursor results=db.query(PERSON_TABLE, new String[]{in_ID,iPHONE,iNAME,iBIRTH,iHOBBY,iPASSWORD,iIMAGE}, null,null,null, null, iNAME); return ConvertToPeople(results); } /* * 查询数据转换 */ public Infor_table[] ConvertToPeople(Cursor cursor){ int resultCounts=cursor.getCount(); if(resultCounts==0||!cursor.moveToFirst()){ return null; } Infor_table[] person=new Infor_table[resultCounts]; for (int i = 0; i < resultCounts; i++) { person[i]=new Infor_table(); person[i].ID = cursor.getInt(cursor.getColumnIndex(iNAME)); person[i].phonenumber=cursor.getInt(cursor.getColumnIndex(iPHONE)); person[i].username=cursor.getString(cursor.getColumnIndex(iNAME)); person[i].birth=cursor.getString(cursor.getColumnIndex(iBIRTH)); person[i].hobby=cursor.getString(cursor.getColumnIndex(iHOBBY)); person[i].password=cursor.getString(cursor.getColumnIndex(iPASSWORD)); person[i].image=cursor.getString(cursor.getColumnIndex(iIMAGE)); cursor.moveToNext(); } return person; } /* * 更新个人信息 */ public long updateOnteData(String id ,Infor_table person){ String where = "username=?"; String[] whereArgs = new String[] {String.valueOf(id)}; ContentValues updatevalues=new ContentValues(); updatevalues.put(iNAME,person.username); updatevalues.put(iPHONE,person.phonenumber); updatevalues.put(iBIRTH,person.birth); updatevalues.put(iHOBBY, person.hobby); updatevalues.put(iPASSWORD, person.password); updatevalues.put(iIMAGE, person.image); return db.update(PERSON_TABLE, updatevalues, where , whereArgs); } /* * public void updatePoint(int idPoint, int ColumnNr, int Column, int lamp, int armor, int lampState){ String where = "id=?"; String[] whereArgs = new String[] {String.valueOf(idPoint)}; ContentValues values = new ContentValues(); values.put(PointsDB.COLUMNNR, ColumnNr); values.put(PointsDB.COLUNA, Column); values.put(PointsDB.LAMP, lamp); values.put(PointsDB.ARMOR, armor); values.put(PointsDB.LAMPSTATE, lampState); database.update(PointsDB.TABLE_NAME, values, where, whereArgs); } */ /** 静态Helper类,用于建立、更新和打开数据库*/ private static class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } private static final String PERSON_CREATE = "create table " + PERSON_TABLE + " (" + in_ID + " integer primary key autoincrement, "+ iPHONE + " integer, " + iNAME+" text not null, " + iBIRTH+" text,"+iHOBBY +" text, "+ iIMAGE + " text, " + iPASSWORD+" text not null);"; @Override public void onCreate(SQLiteDatabase _db) { _db.execSQL(PERSON_CREATE); _db.execSQL("insert into peopleinfo (_id,username,password,birth,hobby,pnumber,touxiang) values (1,'admin','password','1995-1-30','reading','676552',null)"); } @Override public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) { _db.execSQL("DROP TABLE IF EXISTS " + PERSON_TABLE); onCreate(_db); } } }
android读取联系人时报错
跟着郭神的《第一行代码》写的,学到7.2.2节的读取联系人时出了点问题。 代码如下: ``` public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper; ListView contactsView; ArrayAdapter <String> adapter; List<String> contactsList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); contactsView = (ListView) findViewById(R.id.contacts_view); adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactsList); contactsView.setAdapter(adapter); readContacts(); } private void readContacts() { Cursor cursor = null; cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null); while (cursor.moveToNext()) { // 获取联系人姓名 String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); // 获取联系人手机号 String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); contactsList.add(displayName + "\n" + number); if (cursor != null) { cursor.close(); } } } } ``` ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/contacts_view"> </ListView> </LinearLayout> ``` ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.chalice.sqlite"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <uses-permission android:name="android.permission.READ_CONTACTS" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> ``` 错误信息: ``` 01-29 05:01:26.758 10406-10406/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.chalice.sqlite, PID: 10406 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chalice.sqlite/com.example.chalice.sqlite.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=10406, uid=10058 requires android.permission.READ_CONTACTS, or grantUriPermission() at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=10406, uid=10058 requires android.permission.READ_CONTACTS, or grantUriPermission() at android.os.Parcel.readException(Parcel.java:1465) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) at android.content.ContentProviderProxy.query(ContentProviderNative.java:413) at android.content.ContentResolver.query(ContentResolver.java:461) at android.content.ContentResolver.query(ContentResolver.java:404) at com.example.chalice.sqlite.MainActivity.readContacts(MainActivity.java:49) at com.example.chalice.sqlite.MainActivity.onCreate(MainActivity.java:27) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)  at dalvik.system.NativeStart.main(Native Method) ```
急!android编写高分榜Activity因为SQLite无法实现跳转,求大神找错
我是直接跟别人代码里一样写的,但到了我自己的项目里就无法实现活动跳转,程序报错自动关闭了, 求大神帮忙看看错在哪里了 ``` package com.example.re; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.TextView; //import java.io.InputStream; import com.example.eluosifangkuai.R; import com.example.re.SQLiteHelper; public class RankActivity extends Activity { private View m_view; private TextView m_textview_ranking_num; private TextView m_textview_ranking_name; private TextView m_textview_ranking_score; private TextView m_textview_ranking_date; private SQLiteHelper m_SqLiteHelper = new SQLiteHelper(this); private SQLiteDatabase m_SQLiteDatabase; //@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranking); m_view=(View)findViewById(R.id.RankingActivity) ; m_textview_ranking_num=(TextView)findViewById(R.id.textview_ranking1); m_textview_ranking_name=(TextView)findViewById(R.id.textview_ranking2); m_textview_ranking_score=(TextView)findViewById(R.id.textview_ranking3); m_textview_ranking_date=(TextView)findViewById(R.id.textview_ranking4); m_SQLiteDatabase = m_SqLiteHelper.getWritableDatabase(); } //@Override protected void onStart() { // TODO Auto-generated method stub int num=0; String str; // LoadBkGd(); m_textview_ranking_num.setText(""); m_textview_ranking_name.setText(""); m_textview_ranking_score.setText(""); m_textview_ranking_date.setText(""); String _SqlText = "Select * From ranking order by Score desc"; Cursor _CursorB = m_SQLiteDatabase.rawQuery(_SqlText, null); while (_CursorB.moveToNext()) { num++; m_textview_ranking_num.setText(m_textview_ranking_num.getText().toString()+num+"\n"); str=_CursorB.getString(_CursorB.getColumnIndex("UserName"))+"\n"; m_textview_ranking_name.setText(m_textview_ranking_name.getText().toString()+str); str=_CursorB.getInt(_CursorB.getColumnIndex("Score"))+"\n"; m_textview_ranking_score.setText(m_textview_ranking_score.getText().toString()+str); str=_CursorB.getString(_CursorB.getColumnIndex("Date"))+"\n"; m_textview_ranking_date.setText(m_textview_ranking_date.getText().toString()+str); } super.onStart(); } } ``` ``` package com.example.re; import com.example.re.DateBaseConfig; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class SQLiteHelper extends SQLiteOpenHelper { private static final String m_DataBaseName = "infDateBase"; private static final int m_Version = 1; public SQLiteHelper(Context context) { // 创建一个名为GetDataBaseName的数据库 super(context, GetDataBaseName(), null, GetVersion()); } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } public void Init(SQLiteDatabase arg0) { String _SqlText ="Select * From sqlite_master Where type = 'table' AND name='ranking'" ; Cursor _Cursor =arg0.rawQuery(_SqlText, null) ; //Log.i("你好","有表"); if(_Cursor.getCount()==0) { //Log.i("你好","没ranking表"); _SqlText="Create TABLE ranking([UserName] varchar(10) NOT NULL,[Score] integer NOT NULL" + ",[Date] varchar(50) NOT NULL)" ; arg0.execSQL(_SqlText); //Date _date=new Date(); ContentValues _ContentValues = new ContentValues(); _ContentValues.put("UserName","mYI"); _ContentValues.put("Score",1); //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); _ContentValues.put("Date","2013年10月1日"); arg0.insert("ranking", null, _ContentValues); } } public static String GetDataBaseName() { return m_DataBaseName; } public static int GetVersion() { return m_Version; } } ```
Android Xutils DBUtils save 报错
我在Android开发的时候,利用DBUtils来存储bean,我有 @Id 注解的id,但是sava的方法的时候 会报以下错误 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Float 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: at com.lidroid.xutils.db.converter.FloatColumnConverter.fieldValue2ColumnValue(FloatColumnConverter.java:1) 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: at com.lidroid.xutils.db.table.Column.getColumnValue(Column.java:80) 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: at com.lidroid.xutils.db.sqlite.SqlInfoBuilder.column2KeyValue(SqlInfoBuilder.java:267) 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: at com.lidroid.xutils.db.sqlite.SqlInfoBuilder.entity2KeyValueList(SqlInfoBuilder.java:293) 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: at com.lidroid.xutils.db.sqlite.SqlInfoBuilder.buildInsertSqlInfo(SqlInfoBuilder.java:36) 11-18 17:03:15.751 17326-17326/dawizards.eatting W/System.err: at com.lidroid.xutils.DbUtils.save(DbUtils.java:216)
为什么运行查询和删除数据库时闪退?
MainActivity ``` package com.example.administrator.diary; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Button mm_login,yk_login; static final String db_pass="passwordDB"; static final String tb_pass="passwordTB"; SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //调用创建数据库方法 CREATE(); //调用按钮监听器方法 init(); //游客跳转 yk_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到日记界面,并实现日记功能 Intent YD=new Intent(MainActivity.this,DiaryActivity.class); startActivity(YD); } }); } //打开或创建数据库 public void CREATE(){ db = openOrCreateDatabase(db_pass, Context.MODE_PRIVATE, null); String createTable = " CREATE TABLE IF NOT EXISTS " + tb_pass + "(password_id VARCHAR (4) PRIMARY KEY)"; db.execSQL(createTable); } //获取activity_main的控件 public void init(){ mm_login=findViewById(R.id.but_mm_login); yk_login=findViewById(R.id.but_yk_login); //获取数据库数据项 Cursor cur=db.rawQuery("SELECT * FROM passwordTB",null); int amount=cur.getCount(); //数据库为0则表示没有密码存在数据库,密码跳转到注册密码界面,游客可直接登录日记界面 if (amount==0){ mm_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到注册界面,并实现注册功能 Intent MR=new Intent(MainActivity.this,RegisterActivity.class); startActivity(MR); } }); yk_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到日记界面,并实现日记功能 Intent YD=new Intent(MainActivity.this,DiaryActivity.class); startActivity(YD); } }); } else{//数据项不为0,则有密码已存在 mm_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //为了跳转到密码输入界面,并实现密码输入功能 Intent MS=new Intent(MainActivity.this,SendActivity.class); startActivity(MS); } }); //游客按钮隐藏 yk_login.setVisibility(Button.INVISIBLE); } } } ``` 登录代码 ``` package com.example.administrator.diary; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SendActivity extends AppCompatActivity { Button log; EditText onesend,twosend; static final String db_pass="passwordDB"; static final String tb_pass="passwordTB"; SQLiteDatabase db; String f_send; String s_send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_send); //获取控件地址 log=findViewById(R.id.btn_log); onesend=findViewById(R.id.send); twosend=findViewById(R.id.resend); //获取密码 f_send = onesend.getText().toString(); s_send = twosend.getText().toString(); //打开或创建数据库 db=openOrCreateDatabase(db_pass, Context.MODE_PRIVATE,null); String createTable=" CREATE TABLE IF NOT EXISTS "+tb_pass+"(password VARCHAR (4))"; db.execSQL(createTable); //调用登录按钮方法 login(); } //对比输入密码和设置密码是否相同 private void check(){ //读取数据库中设置的密码 Cursor c=db.rawQuery("SELECT password FROM passwordTB",null); String p=c.getString(0); //判断是否相同 if (f_send.equals(p)&&s_send.equals(p)){ Toast.makeText(SendActivity.this,"登录成功",Toast.LENGTH_SHORT).show(); //判断相同后跳转到日记界面 Intent SD=new Intent(SendActivity.this,DiaryActivity.class); startActivity(SD); } //不同提醒用户 else Toast.makeText(SendActivity.this,"密码输入不对,请重新输入",Toast.LENGTH_SHORT).show(); } //登录按钮功能 private void login(){ log.setOnClickListener(new View.OnClickListener() { @Override //监听器 public void onClick(View v) { //调用检验密码方法 check(); } }); } } ``` 删除数据库代码 ``` package com.example.administrator.diary; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class DiaryActivity extends AppCompatActivity { private Button de; static final String db_pass="passwordDB"; static final String tb_pass="passwordTB"; SQLiteDatabase db; Cursor cursor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_diary); //获取控件位置 de=findViewById(R.id.delete); //打开或创建数据库 db=openOrCreateDatabase(db_pass, Context.MODE_PRIVATE,null); String createTable=" CREATE TABLE IF NOT EXISTS "+tb_pass+"(password VARCHAR (4))"; db.execSQL(createTable); Ondelete(); } //删除密码按钮方法 private void Ondelete(){ de.setOnClickListener(new View.OnClickListener() { @Override //监听器 public void onClick(View v) { //删除数据表方法 String sql = "delete from passwordTB where id = 0"; db.execSQL(sql); Toast.makeText(DiaryActivity.this,"删除成功",Toast.LENGTH_SHORT).show(); } }); } } ``` 建表插表代码 ``` //打开或创建数据库 db=openOrCreateDatabase(db_pass, Context.MODE_PRIVATE,null); String createTable=" CREATE TABLE IF NOT EXISTS "+tb_pass+"(password VARCHAR (4))"; db.execSQL(createTable); compare(); zc(); } //添加新密码到数据库中 private void addData(String password){ ContentValues cv=new ContentValues(1); cv.put(" password",password); db.insert(tb_pass,null,cv); } ``` 闪退后报错 ``` 2020-02-04 17:22:49.787 15729-15729/com.example.administrator.diary E/SQLiteLog: (1) no such column: id 2020-02-04 17:22:49.787 15729-15729/com.example.administrator.diary D/AndroidRuntime: Shutting down VM 2020-02-04 17:22:49.788 15729-15729/com.example.administrator.diary E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.administrator.diary, PID: 15729 android.database.sqlite.SQLiteException: no such column: id (code 1 SQLITE_ERROR): , while compiling: delete from passwordTB where id = 0 at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:985) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:592) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:61) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:33) at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1802) at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1730) at com.example.administrator.diary.DiaryActivity$1.onClick(DiaryActivity.java:39) at android.view.View.performClick(View.java:6913) at android.view.View.performClickInternal(View.java:6890) at android.view.View.access$3200(View.java:792) at android.view.View$PerformClick.run(View.java:27158) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:209) at android.app.ActivityThread.main(ActivityThread.java:7021) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:486) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:872) ``` 程序可以运行,但点击登录按钮或删除按钮后都会返回到mainactivity的界面,再按一次登录或删除就崩溃了,而且还没有达到删除数据库的目的,有大神知道是哪里出问题了吗?
SQLite insert数据不报错,但是数据库中没有该记录
检查了一遍,应该没什么错误啊,中间用了下cursor,为什么没有这条数据记录呢 ``` //省略之前 sqLiteOpenHelper_userList=new SQLiteOpenHelper_UserList(User_Register.this,"UserList.db",1); //省略其他 sqLiteOpenHelper_userList.getWritableDatabase().execSQL("insert into userlist_inf values(null,?,?)",new String[]{userName,passWord}); ```
在android使用sqlite时 遇到问题
如果 onCreate 中的db.execSQL 建立的语句写成db.execSQL("create table [color=darkred]user[/color](id int,name varchar(20))");就没有问题。当时如果改变user为其他就会报错 认真检查过insert方法是对poolo表写入。但是进行查询和修改时会报错。 public void onCreate(SQLiteDatabase db) { db.execSQL("create table poolo(id int,name varchar(20))"); System.out.println("MySQLiteOpenHelper======>onCreate"); } ================================================= package cfuture.poolo; import java.util.Random; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SQLiteActivity extends Activity { private Button createSQLite=null; private Button updateSQLite=null; private Button insert=null; private Button update=null; private Button select=null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); createSQLite=findView(R.id.creatButton); updateSQLite=findView(R.id.updateSQLite); insert=findView(R.id.insert); update=findView(R.id.update); select=findView(R.id.select); createSQLite.setOnClickListener(new createSQLiteListener()); updateSQLite.setOnClickListener(new updateSQLiteListener()); insert.setOnClickListener(new insert()); update.setOnClickListener(new update()); select.setOnClickListener(new select()); } public Button findView(int Rtemp) { Button temp=null; temp=(Button)this.findViewById(Rtemp); return temp; } class createSQLiteListener implements OnClickListener { @Override public void onClick(View v) { MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test",null,1); SQLiteDatabase db=my.getReadableDatabase(); } } class updateSQLiteListener implements OnClickListener { @Override public void onClick(View v) { MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test",2); SQLiteDatabase db=my.getReadableDatabase(); } } class insert implements OnClickListener { int i=1; @Override public void onClick(View v) { MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test"); SQLiteDatabase db=my.getWritableDatabase(); ContentValues c= new ContentValues(); c.put("id", i); i++; c.put("name", "poolo"); Random r= new Random(); c.put("age", r.nextInt(20)); db.insert("poolo", null, c); System.out.println("SQLiteActivity======>insert success"); } } class update implements OnClickListener { @Override public void onClick(View v) { MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test"); SQLiteDatabase db=my.getWritableDatabase(); ContentValues c= new ContentValues(); c.put("name", "awen"); db.update("poolo", c, "id=?", new String[]{"1"}); System.out.println("SQLiteActivity======>update success"); } } class select implements OnClickListener { @Override public void onClick(View v) { MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test"); SQLiteDatabase db=my.getReadableDatabase(); Cursor c=db.query("poolo", new String[]{"id","name","age"}, "id=?",new String[]{"1"}, null, null, null); System.out.println("SQLiteActivity======>update success"); while(c.moveToNext()){ String name =c.getString(c.getColumnIndex("name")); System.out.println("sqlquery=="+name ); System.out.println("name id=="+c.getColumnIndex("name")); } } } }
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
阿里P8数据架构师:顶级开发者都在用什么数据库?
其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊喊,然后该用还用,今年从传统领域刮起的去某数据库的风,已经开始了,并且后面的乌云密布也看得见。 最近看一篇国外的开源产品提供厂商的一篇文字,主要是在询问了他的几百位客户后得出了下图中的2019年数据库的使用趋势。 从图中可以看出,MySQL以38.9...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
互联网公司分布式系统架构演进之路
介绍 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 分布式:一个业务拆分成多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 例如:电商系统可以拆分成商品,订单,用户等子系统。这就是分布式,而为了应对并发,同时部署好几个用户系统,这就是集群 1 单应用架构 2 应用服务器和数据库服务器分离 单机负载越来越来,所以要将应用服务器和数据库服务器分离 3 应用服务...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
程序员需要了解的硬核知识之汇编语言(一)
之前的系列文章从 CPU 和内存方面简单介绍了一下汇编语言,但是还没有系统的了解一下汇编语言,汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇编语言。 汇编语言和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言)程序,用 C 语言等高级语...
OpenCV-Python 绘图功能 | 七
目标 学习使用OpenCV绘制不同的几何形状 您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等。 代码 在上述所有功能中,您将看到一些常见的参数,如下所示: img:您要绘制形状的图像 color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)对于蓝色。对于灰度,只需传递...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Fiddler+夜神模拟器进行APP抓包
Fiddler+夜神模拟器进行APP抓包 作者:霞落满天 需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。 工具:Fiddler抓包,夜神模拟器 模拟手机 安装APP 1.下载Fiddler https://www.telerik.com/download/fiddler Fiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信...
小白学 Python 爬虫(42):春节去哪里玩(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
一文带你看清 HTTP 所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
[数据结构与算法] 排序算法之归并排序与基数排序
归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 基本思想 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
史上最牛逼的 Eclipse 快捷键,提高开发效率!
如果你在使用IDEA,请参考博主另外的一篇idea快捷键的博客。
相关热词 c#怎么获得线程名 c# usb 采集器 c# csv 读取 c# sort() c# 关闭io流 c# 响应函数 插入 c#面对对象的三大特性 c# 打印 等比缩放 c#弹出右键菜单 c#1如何搞成01
立即提问