MrM*_*ins -2 java sqlite varchar android
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = this.openOrCreateDatabase("Practice", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS blah (subjects VARCHAR, notes VARCHAR, amount VARCHAR");
}
Run Code Online (Sandbox Code Playgroud)
错误日志:
E/SQLiteLog:(1)在"VARCHAR"附近:语法错误06-30 23:46:21.834 11420-11420/com.asd.sqltesting D/AndroidRuntime:关闭VM 06-30 23:46:21.835 11420-11420/com.asd.sqltesting E/AndroidRuntime:FATAL EXCEPTION:main进程:com.asd.sqltesting,PID:11420 java.lang.RuntimeException:无法启动活动ComponentInfo {com.asd.sqltesting/com.asd.sqltesting.MainActivity} :android.database.sqlite.SQLiteException:near"VARCHAR":语法错误(代码1):,同时编译:CREATE TABLE IF NOT EXISTS blah(subject VARCHAR,notes VARCHAR,amount VARCHAR at android.app.ActivityThread.performLaunchActivity(ActivityThread) .java:2298)在Android.app.ActivityThread.access $ 800(ActivityThread.java:144)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)android.app.ActivityThread $ H.handleMessage(ActivityThread.java) :1278)android.app.Handler.dispatchMessage(Handler.java:102)android.app.Looper.loop(Looper.java:135)android.app.ActivityThread.main(ActivityThre)ad.java:5221)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.运行(ZygoteInit.java:899)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)引起:android.database.sqlite.SQLiteException:near"VARCHAR":语法错误(代码1): ,同时编译:CREATE TABLE IF NOT EXISTS blah(subject VARCHAR,notes VARCHAR,amount VARCHAR at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)在android.database.sqlite.SQLiteConnection.expare(SQLiteConnection.java:500)的android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)在android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674)at at android.dapp.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605)在android.app.Activity.performCreate(Activity.java:5933)的com.asd.sqltesting.MainActivity.onCreate(MainActivity.java:18)位于android.app.A活动中的android.app.ActivityThread.perleLaunchActivity(ActivityThread.java:2251)上的.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105),位于android.app.ActivityThread的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360).在Android.os.Looper.loop上的android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1278)访问$ 800(ActivityThread.java:144) Looper.java:135)在java.lang.reflect.Method.invoke的java.lang.reflect.Method.invoke(Native Method)的android.app.ActivityThread.main(ActivityThread.java:5221)上(Method.java: 372)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
我试图创建一个包含多列的表,但这种情况一直在发生.这段确切的代码用于另一个项目,但是第二次在同一个活动中使用它时会发生错误.
你错过了收盘')':
db.execSQL("CREATE TABLE IF NOT EXISTS blah (subjects VARCHAR, notes VARCHAR, amount VARCHAR);");
Run Code Online (Sandbox Code Playgroud)
VARCHAR的大小在sqlite中是可选的
请参阅https://www.sqlite.org/syntax/type-name.html.
要验证您的陈述,您可以使用 sqlite3
$ sqlite3
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
Connected to a transient in-memory database.
sqlite> CREATE TABLE IF NOT EXISTS blah (subjects VARCHAR, notes VARCHAR, amount VARCHAR);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |