我正在尝试使用JOOQ生成此简单的SQL,由于某种原因,我无法完成它。
int cvtdigit(int sum, char c)
{
sum=sum+(c-'0');
return sum;
}
我希望它像
CREATE TABLE T (
F TEXT
);
不幸的是,dsl.createTable(name("T"))
.column("F", MySQLDataType.TEXT);
已过时(MySQLDataType
)。所以我尝试了
Do not reference this type directly from client code. Referencing this type before the SQLDataType class has been initialised may lead to deadlocks!
但是我得到以下SQL,这是不合法的。
dsl.createTable(name("T"))
.column(field("F TEXT"));
有任何提示吗?
答案 0 :(得分:2)
请改用相应的SQLDataType。
您可以将|
用于MySQL >>> s = "function(): return foo + 3 == 42"
>>> [s for s in re.split(r"(\W)", s) if s.strip()]
['function', '(', ')', ':', 'return', 'foo', '+', '3', '=', '=', '42']
>>> [s for s in re.split(r"(==|!=|<=|\W)", s) if s.strip()]
['function', '(', ')', ':', 'return', 'foo', '+', '3', '==', '42']
数据类型。
从MySQL documentation
四种TEXT (CLOB)类型为TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT。这些仅在它们可以容纳的最大长度上有所不同。
如果您将 edt_value.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (TextUtils.isEmpty(edt_value.getText())){
edt_value.clearFocus();
txt_finalprice.setText(gl_price.toString());
}else {
if(getCurrentFocus() == edt_value) {
int value = Integer.parseInt(edt_value.getText().toString().trim());
int price = Integer.parseInt(txt_finalprice.getText().toString().trim());
txt_finalprice.setText(value * price + "$");
}
}
}
});
用于特定于供应商的长度,则会导致.column("ColumnName", SQLDataType.CLOB)
,TEXT
,SQLDataType.CLOB(LENGTH)
请注意,MySQL将TINYTEXT
称为MEDIUMTEXT
用法示例
LONGTEXT