当前页面: 开发资料首页 → J2EE 专题 → SQL之低级问题
SQL之低级问题
摘要: SQL之低级问题
在做Struts项目的时候...连接SQL是通过的...不过一写上下面的语句就有错误了:
stmt.execute("insert into userInfo values('aa','aa')");
就说找不到 userInfo对象...连接没问题~~~这个userInfo名字也没错....
到底是什么问题呢?~~~
可能是数据库不对吧````
把错误的详细信息贴出来好不``?~!``
连接SQL是通过的...不过一写上下面的语句就有错误了:
stmt.execute("insert into userInfo values('aa','aa')");
光这一条有问题吗? 有试过别的表吗,否则怎么知道连接没问题
数据库表属主的问题?加上用户名.呢
你可以用完整的格式试一下:
insert into usrInfo (column1,column2,colunm3) values ('a','a','a')
试试行不行.
我试过其它数据库和其它表...完整的格式也试过了...可它就是说找不到userInfo对象~~~郁闷了...
测试的程序如下:
import java.sql.*;
import javax.sql.*;
import java.io.*;
public class UserBean {
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs=null;
private String reg="sun.jdbc.odbc.JdbcOdbcDriver";
private String url="jdbc:odbc:shop;DatabaseName=shop";
private String user="sa";
public UserBean()
{
try{
Class.forName(reg);
conn=DriverManager.getConnection(url,user,"");
System.out.println("连接成功...");
}catch(Exception e){e.printStackTrace();}
try{
stmt = conn.createStatement();
stmt.execute("insert into userInfo values('d','ddddd')");
System.out.println("添加成功");
}catch(Exception e){e.printStackTrace();}
}
public static void main(String args[])
{
new UserBean();
}
}
第一个try{}是连接的...通过了..
第二个try{}是操作的...不行了...去年这句就行了:stmt.execute("insert into userInfo values('d','ddddd')");
错误如下:
java.sql.SQLException:[ Microsoft ODBC Sql Server Driver][SQL Server]对象名"userInfo"无效.
为什么连接通过...操作却不行了呢?
写成select语句也不行...
用的是SqlServer2000??
改成这样试试:
stmt.execute("insert into dbo.userInfo values('aa','aa')");
表结构贴出来!!!
用pstmt试试
private PreparedStatement pstmt;
sql="insert into userinfo values(?,?)";
pstmt = conn.preparedStatement(sql);
pstmt.setString(1,"d");
pstmt.setString(2,"ddd");
pstmt.executeUpdate();
可能有些拼写错误,你用IDE根据提示就出来正确的了,用原始JDBC操作数据库很久没用了,现在一直用Hibernate。^o^
表结构贴出来!!!
用的是SqlServer2000??
改成这样试试:
stmt.execute("insert into dbo.userInfo values('aa','aa')");
~~~这样不行~~~
表结构就是简单的要命:
UserName char(25)
Password char(20)
很久之前就写过这种语句了....想不到今天才给黑了~~~
stmt.execute("insert into dbo.userInfo values('aa','aa')");写成
stmt.executeSql("insert into dbo.userInfo values('aa','aa')");试试!
有这样一个方法?还是自己定义的~~~
表名[userInfo]
用这个试试看
up
语句没问题啊,我照着你的做了一下是成功的,不过我用的是oracle数据库,你应该检查一下你的数据库配置。
package test;
import java.sql.*;
public class UserBean {
private Connection conn=null;
private Statement stmt=null;
private String reg="oracle.jdbc.driver.OracleDriver";
private String url="jdbc:oracle:thin:@localhost:1521:oradp";
private String user="scott";
public UserBean()
{
try{
Class.forName(reg);
conn=DriverManager.getConnection(url,user,"tiger");
System.out.println("连接成功...");
}catch(Exception e){e.printStackTrace();}
try{
stmt = conn.createStatement();
stmt.execute("insert into t_users values(1,'gao','d','ddddd')");
System.out.println("添加成功");
}catch(Exception e){e.printStackTrace();}
}
public static void main(String args[])
{
new UserBean();
}
}
什么方法都试过了~~~还是不行...
哎呀~~~各位!!!折腾了整天...我终于找到了解决方法...:
stmt.execute("insert into [userInfo] values('d','ddddd')");--不行
stmt.execute("insert into shop.userInfo values('d','ddddd')");--不行--shop是数据库名.
stmt.execute("user shop insert into userInfo values('d','ddddd')");--行了~~~
唉...这次真是TMD的变态了....在查询分析器里面才用的语句...居然要在这里加上了~~~
希望大家以后多多小心了...
oracle我也编了不少...之前我也确定语句没什么问题的~~~但还是给黑了...
再爱你一次--------------