这里的基本问题,我可以将String变量放入字符串数组中的位置以及更多文本吗?
这是我正在尝试做的事情
public static final String CAT_BUD_TAB = "CAT_BUD_TAB";
public static final String inI = "INSERT INTO ";
public static final String val = " VALUES ";
public static final String[] catInsertArray = new String[13];
catInsertArray[0] = inI + CAT_BUD_TAB + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";
但显然这不会起作用,因为它期望“标记要包含的字符串的开头。无论如何这会起作用吗?
修改
不是它不是SQL im关注的,我只是试图将一些文本与字符串变量中的文本结合起来,并将它们全部保存为数组中的一个长字符串。可能会让它变得更加混乱,如果是这样,请忽略此编辑并重新阅读原始问题。
按照建议删除括号,并使用所有相关代码更新上面的代码块。
但是eclipse仍然说在令牌上有“语法错误,删除这些令牌”并且整个代码行都有潦草的红色(catInsertArray [0] = ....)
此类课程的pastebin如果你足够好看看http://pastebin.com/cKa0sKEj
答案 0 :(得分:3)
我怀疑你原来的问题是代码体外的代码。这个演示类将编译并运行,并有评论指出你可能正在做什么和什么是正确的。
public class StringTest
{
public static final String crT = "CREATE TABLE ";
public static final String inI = "INSERT INTO ";
public static final String val = " VALUES ";
public static final String[] catInsertArray = new String[13];
// you were probably doing this, which is not allowed in Java because you are writing code outside of a method body or static initializer block
//catInsertArray[0] = inI + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";
static
{
// static initialize your static member
catInsertArray[0] = inI + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";
}
public static void main(String [] args)
{
// You can put code in a method
//catInsertArray[0] = inI + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";
}
}
从您的新评论中 - 您在pastebin链接中的代码存在一些问题。我有一件事是你在DatabaseConstants
类中声明一个嵌套接口的原因?这似乎是不必要的,因为你正在为常量做一个类。
此外,您仍然遗漏了static
initializer block以将内容放入String
数组中。请参阅下面的代码。
package com.geistware.studentbudgetapp;
import android.provider.BaseColumns;
public class DatabaseConstants {
//Variables for DDL statements and such
public static final String crT = "CREATE TABLE ";
public static final String inI = "INSERT INTO ";
public static final String val = " VALUES ";
//Table Names
public static final String CAT_BUD_TAB = "CAT_BUD_TAB";
public static final String TWO_WEE_TAB = "TWO_WEE_TAB";
//columns from the category_budget_table
public static final String CAT_ITEM = "CAT_ITEM";
public static final String IN_OUT = "IN_OUT";
public static final String BUDGET_AMOUNT = "BUDGET_AMOUNT";
public static final String ACTUAL_AMOUNT = "ACTUAL_AMOUNT";
public static final String AMOUNT_STRAYED = "AMOUNT_STRAYED";
public static final String OVERBUDGET_TF = "OVERBUDGET_TF";
public static final String AUTOSPEND_TF = "AUTOSPEND_TF";
//Initial DDL Statements and Initial INSERT statements to populate table
public static final String createCATBUDTAB = (crT + CAT_BUD_TAB +
"(_id INTEGER PRIMARY KEY, CAT_ITEM TEXT, IN_OUT TEXT, BUDGET_AMOUNT REAL, ACTUAL_AMOUNT REAL, AMOUNT_STRAYED REAL, OVERBUDGET_TF INTEGER, AUTOSPEND_TF INTEGER);");
public static final String createTWOWEETAB = (crT + TWO_WEE_TAB +
"(_id INTEGER PRIMARY KEY, SUB_CAT_ITEM TEXT, CAT_ITEM TEXT, COST REAL, ESSENTIAL_TF INTEGER, CURRENT_LAST TEXT, WEEK_ID INTEGER);");
public static String[] catInsertArray = new String[13];
// you still need to to put this code into a static initializer block
static
{
catInsertArray[0] = inI + CAT_BUD_TAB + val + "(null, 'Student Loan', 'in', 0.00, 0.00, 0.00, 0, 0 );";
}
}
然而,对于像常量列表这样的东西,我更喜欢使用enumeration,但希望这能让你走上正确的轨道,至少可以获得有效的构建。
答案 1 :(得分:2)
如果变量的值也是字符串,则可以执行此操作。请记住,数组位置只是一个容器。
但是,您没有调用方法,因此请删除括号。只是做:
array[position] = stringVariable1 + stringVariable2 + " some other string";
答案 2 :(得分:2)
为什么需要将SQL的各个部分区分开来?
你可以使用StringBuffer / StringBuilder来连接你需要的位,记住在你去的时候转义引号。
答案 3 :(得分:0)
“操作上”有很多错误 做。