2015-06-10 20 views
-2
String query = "CREATE TABLE user_post_data ("+str+" varchar(255), post_text varchar(255), post_image longblob, post_date date, like varchar(255), like_time timestamp, like_date date)"; 

这里,str是表示用户的电子邮件的字符串。我要创建的用户的电子邮件ID的一列,但我得到下面这个错误:如何在mysql中设置变量值CREATE TABLE查询? Java

未闭合的字符串文字:指着...“+ STR +” ...

请提供建议。

+0

“like”是'SQL'中的'KEYWORD',尽量避免使用'keywords'并确保'str'不是空的。 –

+0

你知道你只有一个名为user_post_data的数据库?而且表格只有一列对应于一个电子邮件地址?我真的没有看到将用户的电子邮件作为列名的目的。每个用户都有独立的数据库吗? – dstudeba

回答

0

您不能创建column名称,其中包含特殊字符,如@.

我相信电子邮件ID中有一个@,所以它不会创建一个表。

还要确保keywords不作为列名使用。 like是一个关键字。

尝试通过更换@.与其他一些字符,如$

String str = "example$gmail_com" 

String query = "create table newTable("+str+" varchar(255));"; 
+0

你的字符串'str'是一个'null'字符串,给它一个值。 –

0

像创建一个表在SQL中的保留字,直接 以达到像一个不能用作列名列名,你需要把它作为`like`

String query = "CREATE TABLE user_post_data ("+str+" varchar(255), post_text varchar(255), post_image longblob, post_date date, `like` varchar(255), like_time timestamp, like_date date)"; 

所以希望这将会运行得很好

for more details check out this link

0

你需要做的是SQL语句

中附上您的变量是这样 ' “+变量+”'

所以你的发言将读取:

"CREATE TABLE user_post_data ('"+str+"' varchar(255), post_text varchar(255), post_image longblob, post_date date, like varchar(255), like_time timestamp, like_date date)";