1

Androidでこのテーブルを作成しました:

     String CREATE_TABLE="CREATE TABLE " + db_NAME + " ("
                        + row_ID + " INT PRIMARY KEY AUTOINCREMENT,"
                        + row_NAME + " TEXT, "
                        + row_EMAIL + " TEXT, "
                        + row_WEBSITE + " TEXT, "
                        + row_TELEPHONE1 + " TEXT, "
                        + row_TELEPHONE2 + " TEXT, "
                        + row_TELEPHONE3 + " TEXT, "
                        + row_TELEPHONE4 + " TEXT, "
                        + row_TELEPHONE5 + " TEXT;";
    db_name.execSQL(CREATE_TABLE);

そして、私は次のデータを挿入しようとしています:

名前: アーラム M. フセイン

電子メール: ahlam@ahlam.ahlam

ウェブサイト: www.ahlam.com

電話#1: 123456789

電話#2: 0987654321

電話#3:

電話#4:

電話番号 5:

次の文字列を使用します。

     String sql_entry = String.format("Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s) values (%s, %s, %s, %s, %s, %s, %s, %s);",tab_NAME, row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5, name, email, website, telephone1, telephone2, telephone3,telephone4, telephone5);
     ourDatabase.execSQL(sql_entry);

where :( row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5)は列名です。

および :(name, email, website, telephone1, telephone2, telephone3,telephone4, telephone5)データベースに挿入されるデータです。

アプリケーションを実行すると、次のようなエラーが表示されました。

      SQLiteLog        (1) near "M" : syntax error

それで、問題は何ですか???

4

2 に答える 2

1

'文字列を囲む文字を省略しました...

クエリは次のようになります。

Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');

したがって、クエリ文字列自体の作成は次のようになります。

 String sql_entry = String.format("Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');",
tab_NAME, row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5, 
 name, email, website, telephone1, telephone2, telephone3,telephone4, telephone5);

ところで、アプリケーションを開発するときは、フレームワークを使用せずに作成した SQL クエリを常にログに記録します。このような間違いを犯しやすいです。

于 2012-12-21T13:44:30.023 に答える
1

数値以外の値は一重引用符で囲みます。

String sql_entry = String.format("Insert into %s (%s, %s, %s, %s, %s, %s, %s, %s)"
 +" values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
  tab_NAME, row_NAME, row_EMAIL, row_WEBSITE, row_TELEPHONE1, row_TELEPHONE2, 
  row_TELEPHONE3, row_TELEPHONE4, row_TELEPHONE5, name, email, website, 
  telephone1, telephone2, telephone3,telephone4, telephone5);
于 2012-12-21T13:44:31.447 に答える