class="MsoNormal" style="font-family: 宋体, Verdana, Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 23.33333396911621px;">当使用pl_sql报出下面错误的时候:
ORA-01747: user.table.column, table.column?或列说明无效
?
如果报这个错误的时候,是因为我们执行的sql语句中有了oracle的关键字,所以会有这个错误,所以我们就用单引号给这个关键字引起来就没有问题了。
比如:
insert??into department(`id`,`dept_name`,`remark`,`uid`) values (1,'综合处','承担建设项目的管理等工作',1)
因为里面的uid是oracle的关键字,所以用单引号引起来执行就没有问题了。
?
String[]??object??= request.getParameterValues("object");
这样就可以返回一个数组类型
但是返回数组类型后面getParameterValues要是values
如果只返回单个对象的话:
String??object??= request.getParameter("object");
这里request?这个getParameter就可以返回单对象了
?
?
?
当控制台报如下错误时:
Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
?
这说明我们的oracle的驱动连接不上数据库,但是我这时候已经明明的把驱动加到了项目的
/web-inf/lib/下了,可是还是报这个错误,这是为什么呢?
因为oracle的数据库我们把oracle的驱动(ojdbc14.jar)光加到我们的项目中去是没有用的,所以我们还需要把我们的这个oracle驱动加到我们的tomcat的lib下面,这样启动tomcat后就可以连接上我们的oracle数据库了,我用的是tomcat6,所以路径就是tomcat/lib/
?
?
当报这个错误的时候:
ORA-00903:表名无效
或者
ORA-00903: invalid table name
?
这个都是表示我们的表名是无效的
因为我们的表名起为了oracle的关键字,所以是无效的
所以需要注意的是,在mysql往oracle移植的时候一定要注意关键字的问题
用hibernate比较方便可以在.hbm中把table给改名,但是如果用纯jdbc去写的话,那么就麻烦许多了
?
65.Oracle连接字符和mysql的不同方式
Oracle:?'AUTH_'||p.auth_name
Mysql:??count('AUTH_',p.auth_name)
?
在oracle中插入数据需要给这个来插入序列,那么这个需要怎么做呢?
下面举个例子:
String sql =?"insert into t_res_language_schools(id,name,introduction,school_url,address,status,create_by,"+"create_time,provider,provider_url) values(t_res_language_schools_seq.nextval,?,?,?,?,?,?,?,?,?)";
?
t_res_language_schools_seq.nextval是:序列的名字+nextval就可以了
上面插入的地方是把id给指定给序列
?
?
?
?
当我们使用PL/SQL的时候,当报这个“ORA-12154:TNS:无法解析指定的连接标识符”问题的时候,像我的问题就是在单安装了oracle的客户端(oracle_client)的时候没有发现什么问题,因为这时只是默认的安装了一个客户端,当我们再继续装了一个服务端的oracle的时候,这个时候PL/SQL就?不知道默认的连接方式是什么了,现在一般可以连上本机了,但是远程的就连不上了,所以这时候我们要设置一下PL/SQL的连接方式,然后就可以正常连接了,设置如下:
比如出现错误后点确定进入PL/SQL的主界面,然后在主界面中点击:工具--首选项—连接
然后在右侧会看到oracle主目录名(自动检测为空名),然后我们选择oracle客户端的名字(OraClient10g_home1)点应用,重起PL/SQL就可以连接远程服务器和本地的了。
?
如下图:
?
?
我们在页面中使用ajax的时候,如果我们的url对了的话,就不会报网络连接失败的提示了,那么如果我们的url对了,但是我们进不了action中是为什么呢?
因为我使用的这个项目中使用了安全框架,因为没有加入权限,虽然路径对了,但是还是不能连接到我们对应的action,所以这个时候我们就要把对应的权限给加上就可以了。
?
序列名.NEXTVAL?:指定下一个序列
序列名.CURRVAL?:指定当前序列(注:这个必须在NEXTVAL产生序列后才可以使用)
例子:
Select?序列名.NEXTVAL from dual?(产生序列,指定到下一个序列)
Select?序列名.CURRVAL from dual?(产生序列后获取当前的序列)
?
比如A是外键表,B引用A的id,C引用B的id
那么这样怎么去进行级联添加呢?
我们这个必须在一个事务里面去处理:
那么我们这里所遇到的问题就是如何把引用的id去注入,那么我来写下下面的语句,问题就在sql语句的写法上:
A_SEQ是A表序列?B_SEQ?是B表序列???C_SEQ是C表序列
Insert into A(id,a_name) values(a_seq.nextval,?)
Intsert into B(id,b_name,a_id) values(b_seq.nextval,?,a_seq.currval)
Insert into C(id,c_name,b_id) values(c_seq.nextval,?,b_seq.currval)
?
?
?
当我们在数据库中插入一个日期类型的数值是是这样去插入
Insert into (id,create_time) values(example_seq,to_date(‘2009-01-03?9:25:15’,’ YYYY-MM-DD HH24:MI:SS’)
Commit;
?
注意(这里如果日期的格式是?2009-01-03也就是年月日的形式的直接后面的格式是yyyy-mm-dd就可以)
?
在jdbc中如果我们要插入这个日期类型的话,那么我们这里需要写的sql语句和这里的是一样的
String sql=”inert into (id,create_time) values(example_seq,to_date(?,’YYYY-MM-DD HH24:MI:SS’)”;
?
DBManager dbManager =?new?DBManager();
Connection conn = dbManager.GetConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, DateUtil.getCurrDateTime());
//这里我们要注意的是,我们在注入我们日期的时候不需要把这里setdate,因为我们在存储的时候就是以字符串的形式储存的,所以这里,直接用字符串保存就可以了,这里setdate是一个误区
?
?
当oracle中报“ORA-00913:?值过多”错误的时候,那么说明我们的sql语句中有了问题,
一般是我们所需要穿的参数和我们需要保存的字段这里的数量不一致所导致的,所以就产生了一对多,或多对一的现象,下面举个例子:
Insert into (id,name,sex,create_time) values(user_seq,?,?,?)
比如我们sql是这样写的,前面要插入的值是3个,而后面所传入的参数变成了4个,那么在这个时候多出来的一个参数就不知道指定给谁了,所以就会报这个值过多的错误了。
?
?
问题分析:?
??? 1)getter()方法写错了,没有按照javaBean的规则写.?
????
??? 2)*.hmb.xml中的属性名和pojo中的是否一致.注意:属性名是否多了空格.?
启示:.hbm.xml里的排列最好跟数据库表里的排列一样!最好不要乱改变位置!否则会出莫名其妙的错误!
????
???? 3)字段的取名要注意。比如数据库中的字段为M_R_ID,映射到hbm.xml为mRId,那么产生的POJO也是mRId,自动产生的getter方法为:getMRId();相应的setter方法一致,这样就会抛出上面所述异常,这个应该是hibernate的模板格式问题。所以尽量要避免这样的命名。?
解决方法:?
??? 1)换做getmRId();??问题可解决,没有抛出异常,能取值。?
??? 2)修改数据库字段名。这个最好,不会产生以后的不确定因素。
?
因为要上传文件,所以有file控件,这样就必须有ENCTYPE="multipart/form-data"(二进制方式上传),这样一来,form表单中其他控件的值用request.getParameter取出来就为null值,所以用apache file-upload, smart upload等等这样组件的话,需要把request做为参数传给组件,根据if (fileitem.isFormField())来判断是否是普通的文本域,此处为非文本域,然后用组件的方法去取值即可
if (fileitem.isFormField())为true的时候是文本,为false为文件
只有当为true时才可以取出文本的值,否则会抛出异常,例:
If(fileitem.isFormField()){
???????Fileitem.getString();
}
这样就可以获取到值了
?
上面我们解决了在表单中取出非文件域的值,但是像上面的方法取出值后,我们会产生中文乱码的问题,那么这个怎么解决呢?
下面阐述一下解决问题方法:
String charset = request.getCharacterEncoding();//获取到编码类型
DiskFileUpload?fu =?new?DiskFileUpload();
fu.setHeaderEncoding(charset);//这里我们把编码类型注入进去
这样定义了编码类型后,我们在下面的这里还需要定义一下:
If(fileitem.isFormField()){
???????Fileitem.getString(charset);
}
这样问题就解决了。
?
当控制台报这个错误的时候
org.hibernate.TransientObjectException: com.ecoinfo.aceeoa.vo.Attachment
????at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:216)
?
这里说Attachment外键有问题
出这个问题的原因是什么呢?当我们在进行新增的时候也许会往2个表中存数据,而这2个表中又有约束,如果不先保存前个对象的话,那么则会报这个问题
?
举个例子:
报这个错误的例子:
Attachment attachment=new Attachment();
Message message=new Message();
Message.setAttachment(attachment);
messageDao.saveObject(message);//保存方法
如果这么去写的话,因为上面的attachment没有保存,所以下面的message在注入attachment?的时候会找不到对象,所以会报这个问题
那么我们要怎么解决这个问题呢?
解决方法如下:
?
Attachment attachment=new Attachment();
messageDao.saveObject(attachment);//保存方法
Message message=new Message();
Message.setAttachment(attachment);
messageDao.saveObject(message);//保存方法
?
只需要加上面用黄色底纹注释的地方就可以了,
因为上面的attachment虽然注入了对象,但是还没有保存也就没有进入事务,这样当下面的?message要注入它的时候自然找不到了,所以会报错,这点一定要注意!
?所以当我们报这个错误的时候,控制台一定会提示我们是那个vo没有保存,上面告诉我们是Attachment没有保存,所以这样错误就很好找到了
?
?
在tomcat目录下的bin文件夹中,在cmd中,cd tomcat\bin\打开bin目录
然后在启动service.bat批处理文件
Usage: service.bat install/remove [service_name]
然后会提示这个的用法
然后按照上面格式,启动
如
Service.bat install tomcat6service回车就可以了tomcat6service是服务的名字
?
ContentEditable="false"只需要在文件域中加入这个属性就可以把文件域的框变成只读的了
<input type=”file” name=”file” ContentEditable="false"/>这样就可以了
?
?
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:formatDate value='${acceptanceBaseMessage.sceneCheckTime }' pattern='yyyy-MM-dd'/>
?
Window.close();
?
??????????????StringBuffer results = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<models>\n");
???????results.append("<recevieDocIdea><![CDATA[");
???????results.append(""+"&");
???????results.append("]]></recevieDocIdea>");
?
如果上面没有加<![CDATA[]]>那么在处理xml的时候就会有问题,比如&,””的空串就都无法识别了,所以加上这个后可以处理了。
?
当控制台报这个错误的时候
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are
?not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into
FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
?
肯定我们在service中起的方法名字在我们事务处理中进行定义了,我起的方法的名字是getXXX,而我的get这个恰恰就在事务中定义为:
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>???
所以只能进行查询操作而不能进行保存操作所以才会报上面的错误,所以把名字改为不受事务限制的就可以了
?
?
<script type="text/javascript" src="../js/project/projectAjax.js" charset="UTF-8"></script>
?
只需要在charset="UTF-8"加上编码格式就可以解决乱码问题了
?
点这个小三角,menu,然后选择下面的package presentation中选择flat就是我们的默认方式
?
当你在web.xml中配置好路径在浏览器中连接时发现报404错误是,如:
/aceeoa/consultation/consultation/consultationAdd
这样饿错误时,会出现2次相同的目录路径,这是如果你用的是spring MVC的simpleFormController的话,那么你注意一下你的配置中是否配置了formView这个属性,如果没有配置的话,那么配置上,否则会报这个错误找不到相对应的页面。
?
一般出现这个问题都是参数设置的类型不对
比如:你要存入的是long?类型的,但是你却存的是Integer类型的当然不对
?
举个例子:
??????????????Long id=new Long(request.getParameter(“id”));
???????TIsSlowquick?tisSlowQuick=new?TIsSlowquick();
???????tisSlowQuick.setId(id);
?
但是当保存的时候却出现了
Statement parameter 29 not set.错误,这是为什么呢?
?
因为在我们的hibernate的.hbm的文件中我们配置的id类型为Integer类型的,而我们的id是long类型的,当然不一样要报错了,所以我们需要把TIsSlowquick的配置文件中的id的类型改为long就可以了
?
?
?
当页面配置好的时候,js也写好了,但是就是报xxx定义,一般是dwr写的js引入出现了问题。
?
我们需要先在dwr.xml的配置文件中配置好我们需要回调的方法:
???????<create?creator="new"?javascript="Hello1">
<!—这里的javascript=”Hello1”,也就是我们下面在jsp页面中引入的那个js—->
<!—这里的creator=”new”?如果是集成在spring里面则这里换成spring,因为dwr与spring结合的相当的好—->
???????????<param?name="class"?value="onlyfun.caterpillar.Helloworld"?/>
<!—这里的class value=”XXX”?这里的value是我们需要引入的调用的类à
???????</create>
页面中上面需要引入这3个js文件
?
?
???????<script?type='text/javascript'?src='../dwr/interface/Hello1.js'></script>
?
//这个里面的Hello1.js?就是我们在dwr中定义的javascript,这个前面的路径是固定的,后面的这个js需要换成我们起的名字,这样就不会出现XXX未定义的错误了。à
???????<script?type='text/javascript'?src='../dwr/engine.js'></script>
???????<script?type='text/javascript'?src='../dwr/util.js'></script>
<!—这上面的2个js的文件都是dwr中必备的,所以必须配置上à
?
当mysql中报Errno.:1062?Duplicate?entry?'hhhhh'?for?key?2时,
这个问题是由于:
一般是键值被重复输入了,导致的重复错误,可以重新建表来解决这个问题。
?
当mysql中抛出Error Code : 1054
Unknown column '农林水利' in 'where clause'
?
的时候是字段不存在,那么我们怎么解决这个问题呢?
我出现的问题是因为我写了下面的这个sql语句
Select * from acceptance_profession where name=农业
如果这么写的话,当点击运行的时候就会出现错误了,那么如何解决呢?我们只需要把条件上加上引号就可以了,如下:
Select * from acceptance_profession where name=’农业’
?
?
当报java.lang.IllegalStateException: Cannot get a text value from a numeric cell问题的时候是因为我们从excel里面取的值为数值型了,这里面提示的很明显,但是我在后台的取值中还用了的是:
Row.getCell(0).?getStringCellValue();这样当然就会出现问题了,值为数值型,但取出来却是文本,这样就需要我们转换下类型了:
?
private String getContentForType(HSSFCell cell){
??????????????if(cell!=null){
?????????????????????switch(cell.getCellType()){
??????????????????????case HSSFCell.CELL_TYPE_NUMERIC://Numeric
?????????????????????????????return cell.getNumericCellValue()+"";
??????????????????????case HSSFCell.CELL_TYPE_BOOLEAN:
?????????????????????????????return cell.getBooleanCellValue()+"";
??????????????????????case HSSFCell.CELL_TYPE_FORMULA://formula
?????????????????????????????return cell.getCellFormula();
??????????????????????case HSSFCell.CELL_TYPE_STRING:
?????????????????????????????return cell.getRichStringCellValue()+"";
??????????????????????case HSSFCell.CELL_TYPE_BLANK://blank
?????????????????????????????return "";
?????????????????????}
?????????????????????return null;
??????????????}else{
?????????????????????return "";
??????????????}
???????}
?
我们先判断cell是什么类型,然后判断,是那种类型则取出来,然后再转换为string类型就可以了,这样问题就解决了。
?
?
当我们导出excel时,有时候也许有这样的问题,那么这是由于什么原因造成的呢?由于我们在导出的时候设置了单元格的样式,所以限制了文字格式,所以我们这里,要不重新设置单元格格式,要不就去掉单元格设置,单元格设置语句cell4.setCellStyle(wbStyle(wb))。
?
上面除了jstl和standard是jstl的包外,其他都是struts的包
?
如果少了fileupload和io包的话,那么会报如下错误
Unable to load bean: type:org.apache.struts2.dispatcher.multipart.MultiPartRequest class:org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest - bean - jar:file:/F:/file/tomcat/webapps/struts2Demo/WEB-INF/lib/struts2-core-2.1.6.jar!/struts-default.xml:46:178
?
在方法中加入
response.setContentType("text/html;charset=UTF-8");
然后下面在写上输出的js的代码就不会出现中文乱码的问题了。
?
如果用图片触发onclick事件,最好在图片里面用不要用链接形式:
如<img src=”…” onClick=”xx”/>
这样最好
如果是<a href=”#” onClick/><img src=”..”/></a>
这样的话有时会有问题
?
父框架对子框架操作
window.frames["frameName"];
frameName是iframe或者框架的名称
那么如果要是调用子框架中的表单或者内容需要如下操作:
window.frames["frameName"].document后面就是表单的名字或者对于id操作:之类的,下面举个例子,提交子框架内的表单
//这里先将子框架的表单的action给form1的action
????????window.frames['iframeList'].document.form1.action=action1;
//这里将form1提交
????????window.frames['iframeList'].document.form1.submit();?
这样提交后我们就可以获取到值了
?
用replaceAll替换的话需要?“\\\\”才表示1个\
如:
String path=””;
Path.replaceAll(“\\\\”,”a”);这样就可以进行替换了
?
?
?
如果在你这个页面中有iframe,那么如果你要对父窗口进行操作怎么办呢?
用parent.(这里是你要进行的操作就可以了)
比如关闭窗口
Parent.close();
刷新页面
Parent.location.reload();
?
?
onload="this.height=iframeList.document.body.scrollHeight"
?
?
在td中或者css中加上样式style=”?word-wrap: break-word;word-break:break-all;”,这样就可以自动换行了
?
?
//先判断cell是否是数字(因为这时时间也会是数字)
1.????case?HSSFCell.CELL_TYPE_NUMERIC: ??
2.????//如果这个是时间类型,则将它转换成时间
3.????????if?(HSSFDateUtil.isCellDateFormatted(cell))?{ ??
4.????????????double?d?=?cell.getNumericCellValue(); ??
5.????????????Date?date?=?HSSFDateUtil.getJavaDate(d); ??
6.????????}???
?
?
新建一个WorkSpace
File->Switch WorkSpace->other->Browse选择新的工作区
?
在controller或servlet中写上
Strubg message=”操作成功”;
String url="finish.jsp?message="+java.net.URLEncoder.encode(message);
response.sendRedirect(url);
?
//java.net.URLEncoder.encode这个方法是对字符进行编码的
?
然后在定向页面中获取中文参数
?
String message=new String((request.getParameter("message")).getBytes("ISO-8859-1"),"GBK");
?
这么获取后就不会出现乱码了
?
?
当系统报这个问题的时候,这个会在IE8中出现这个问题,IE7会报该页面无法显示的错误,我出这个问题的是因为引进了时间控件的问题,所以弹出这个问题,把js的引入语句放到最后等页面加载完毕就可以了。
?
?
?
在conf下面的用户的配置文件中加上一个用户名
然后在password密码里面配置上相应用户名和相对应的密码
?
?
?
?
点击?MyEclipse->project capabilities->Add hibernate capabilities….
这样创建好了hibernate支持后就可以逆向生成hibernate的映射文件了
?
首先修改myEclipse中的项目名称
改完后,需要修改一下web context root的名字
右键项目properties ->MyEclipse->web->web context root改为改后的项目名称就可以了
?
?
String title=”a=\”java\””;
用这样就可以了\”\”
Rm –rf [文件夹名称]
?
当js报form1.submit()对象不支持时,我们需要查看我们的页面中是否有多个按钮控件,如果有多个的话,查看下name?是否是一样,如果name?是一样的就会造成这样的问题,如果name一样时,调用submit方法时,它将无法判断哪个按钮,所以我们这时把按钮的名字修改了就能解决这个问题了。如:
有一个submit按钮名字叫submit ? ???
? <input ? type="submit" ? name="submit" ? value="提交"/> ? ???
??你把这个名称改一下?? ???
? <input ? type="submit" ? name="submit1" ? value="提交"/> ?
?
?
如果当操作svn进行commit的操作时,报了如下错误:
Attempted to lock an already-locked dir
svn: Working copy 'F:\project\caephr\WebRoot\js' locked
?
如果报了上述的被锁定的错误,那么需要进行一下对svn的清理关闭的锁定,具体操作如下:
右键项目->team->clearup
?
这样清理锁定后进行提交就不会出现文件被锁定的错误了。
?
?
在powerdesigner中设计好了数据库,然后右键->new->report
然后弹出一个NEW REPORT的窗口
Language选择simplified Chinese?简体中文
模板template选择stardard physical report
然后点击菜单report->generate html…..
生成后,进行生成HTML就可以了
?
比如在你的js方法中调用了ajax的方法多次,但是异步的只执行了一次,那么这时需要看看我们的代码了:
function?createOption(url,optionId){
?????????var?xmlhttp;
?????????try{
????????????xmlhttp=?new?ActiveXObject('Msxml2.XMLHTTP');
?????????}catch(e){
????????????try{
????????????????xmlhttp=?new?ActiveXObject('Microsoft.XMLHTTP');
????????????}catch(e){
????????????????try{
???????????????????xmlhttp=?new?XMLHttpRequest();
????????????????}catch(e){}
????????????}
?????????}
?????????//创建请求,并使用escape对userName编码,以避免乱码
?????url = encodeURI(url);
?????xmlhttp.open("post",url);
?????xmlhttp.onreadystatechange=function()
?????{
?????????if(xmlhttp.readystate==4){
?????????if(xmlhttp.status==200)
?????????{
??????????????updateModelsList(optionId,xmlhttp);
?????????}
?????????else
?????????{
?????????????alert("网络链接失败!");
?????????}
?????????
?????????}
?????}
?????xmlhttp.send(null);
?????}???
注意我们的xmlhtpp,这里如果我们设置成了全局的变量的话,那么就会只调用一次ajax,那么我们这里将它设置成局部的后,每次调用ajax的方法时重新声明一次后,然后就可以获取到新的xmlhttp了,那么我们就可以继续重新调用我们的方法了。(注意这里用ajax框架是不好实现的)
?
?
<a href=”#” title=”提示文字”>链接</a>
当鼠标经过链接时,将显示title中的提示文字
?
?
在用Extjs2.2.1中用treePanel时需要注意autoScroll属性和treeEditor之间在IE中会有冲突
默认情况下,autoScroll是false,如果autoScroll改为true的话,那么再用Ext.tree.TreeEditor这个类的话,那么就会出现错误了,firefox中没问题,还是可以用treeEditor进行修改,如果用IE就会报:
Ext-all.js,行9,字符377040?类型不匹配;
a.ui.getEl().scrollIntoView(this.tree.body)
?
所以我们在2.2.1中如果要用treeEditor一定要注意把autoScroll设置为false啊,要不会郁闷死的。
?
?
如果我们在更新或者别的操作的时候选择了”only show this dialog when ”
?
?
问题:org.hibernate.exception.ConstraintViolationException:?could?not?delete: [org.jbpm.pvm.internal.model.ExecutionImpl#1]?
连接Mysql5时,jBPM4运行到?End结点时的错误,把?hibernate.dialect?改为org.hibernate.dialect.MySQLInnoDBDialect
?
hibernate.dialect这个的配置在jbpm的
\jbpm-4.1\jbpm-4.1\install\src\cfg\hibernate\datasource
包下有具体的各个数据库的对于hibernate的配置方式有详细说明
?
?
Myeclipse?启动Tomcat Console中无信息显示
?
我的问题的解决办法是:
将Console中的“Open Console”切换成“Java Stack Trace Console”就好!
这里去选择
?
?
编译后在运行的时候报了Bad?version?number?in?.class?file错误,那说明你的JDK版本有问题,所以换下JDK版本运行就可以了解决如下问题了。
?
Group?为mysql中的关键字,在建表的时候需要注意,否则建表完成后对该表无法进行操作。
?
?
在ext中加入ifame,如果想要在iframe中加入滚动条需要加上这句话:Scrolling="auto",
但是仅仅有这么一句话是不行的,必须是iframe的height(高度)必须小于ext中的panel的高度才可以
?
如果控制台报如下错误时: SQL Error: 1064, SQLState: 42000
那么说明在数据库中的字段有数据库的关键字,这里需要注意
?