import java.sql.*;
public class T{
public static void main(String[] args)
{
String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎
String connectDB="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Mydb";//数据源
try
{
Class.forName(JDriver);//加载数据库引擎,返回给定字符串名的类
}catch(ClassNotFoundException e)
{
//e.printStackTrace();
System.out.println("加载数据库引擎失败");
System.exit(0);
}
System.out.println("数据库驱动成功");
try
{
char id = '2';
String user="sa";
String password="sa";
Connection con=DriverManager.getConnection(connectDB,user,password);//连接数据库对象
System.out.println("连接数据库成功");
Statement stmt=con.createStatement();//创建SQL命令对象
/* //创建表
System.out.println("开始创建表");
String query="create table TABLE1(ID NCHAR(2),NAME NCHAR(10))";//创建表SQL语句
stmt.executeUpdate(query);//执行SQL命令对象
System.out.println("表创建成功");
//输入数据
System.out.println("开始插入数据");
String a1="INSERT INTO TABLE1 VALUES('1','旭哥')";//插入数据SQL语句
String a2="INSERT INTO TABLE1 VALUES('2','伟哥')";
String a3="INSERT INTO TABLE1 VALUES('3','张哥')";
stmt.executeUpdate(a1);//执行SQL命令对象
stmt.executeUpdate(a2);
stmt.executeUpdate(a3);
System.out.println("插入数据成功");
*/
//读取数据
System.out.println("开始读取数据");
ResultSet rs=stmt.executeQuery("SELECT * FROM TABLE1 WHERE ID=id");//返回SQL语句查询结果集(集合)
//循环输出每一条记录
// while(rs.next())
// {
// //输出每个字段
System.out.println(rs.getString("ID")+"\t"+rs.getString("NAME"));
// }
System.out.println("读取完毕");
//关闭连接
stmt.close();//关闭命令对象连接
con.close();//关闭数据库连接
}
catch(SQLException e)
{
e.printStackTrace();
//System.out.println("数据库连接错误");
System.exit(0);
}
}
}
我想实现查询一个id=2的信息,数据库里面两个列的属性都是nchar,运行后报错
请问该怎么弄?
10 个解决方案
#1
ResultSet rs=stmt.executeQuery("SELECT * FROM TABLE1 WHERE ID=
id");
你这……数据库有ID=id的记录吗?没有就报错了,把id改为2
你这……数据库有ID=id的记录吗?没有就报错了,把id改为2
#2
还是错的,
这是数据库截图, 新出错。
我想要的是一个方法,值传递后,在数据库中查找这个值。
这是数据库截图, 新出错。
我想要的是一个方法,值传递后,在数据库中查找这个值。
#3
id='2'试试,因为你的是char类型,不是Integer类型
#4
记录里只有1,2,3,哪里来的id?怎么还不明白
#5
还是错的,帮我看下,我现在要上课去了,中午回来再试,谢谢。
#6
不知道你给2加个引号搞啥。
#7
把rs.next()注释解开,
ID = id 改成 ID = '2'
ID = id 改成 ID = '2'
//读取数据
System.out.println("开始读取数据");
ResultSet rs=stmt.executeQuery("SELECT * FROM TABLE1 WHERE ID='2'");//返回SQL语句查询结果集(集合)
//循环输出每一条记录
while(rs.next())
{
//输出每个字段
System.out.println(rs.getString("ID")+"\t"+rs.getString("NAME"));
}
System.out.println("读取完毕");
#8
不知道解决了没。
你刚插入,然后就去查询,这样没有意思。 数据是需要持久化到数据库中,你需要重新链接就能查询出来了。jdbc的效率还是很快的。
你刚插入,然后就去查询,这样没有意思。 数据是需要持久化到数据库中,你需要重新链接就能查询出来了。jdbc的效率还是很快的。
#9
你应该先判断rs是否为空rs.next(),然后才可以取得的值;
你可以用if或者while都可以判断是否为空,然后在获取对应字段值!
你可以用if或者while都可以判断是否为空,然后在获取对应字段值!
#10
除去注释,就可以了。但是如果我现在不知道ID值是多少,从其他方法导入ID值,在进行查询该怎么做?
#1
ResultSet rs=stmt.executeQuery("SELECT * FROM TABLE1 WHERE ID=
id");
你这……数据库有ID=id的记录吗?没有就报错了,把id改为2
你这……数据库有ID=id的记录吗?没有就报错了,把id改为2
#2
还是错的,
这是数据库截图, 新出错。
我想要的是一个方法,值传递后,在数据库中查找这个值。
这是数据库截图, 新出错。
我想要的是一个方法,值传递后,在数据库中查找这个值。
#3
id='2'试试,因为你的是char类型,不是Integer类型
#4
记录里只有1,2,3,哪里来的id?怎么还不明白
#5
还是错的,帮我看下,我现在要上课去了,中午回来再试,谢谢。
#6
不知道你给2加个引号搞啥。
#7
把rs.next()注释解开,
ID = id 改成 ID = '2'
ID = id 改成 ID = '2'
//读取数据
System.out.println("开始读取数据");
ResultSet rs=stmt.executeQuery("SELECT * FROM TABLE1 WHERE ID='2'");//返回SQL语句查询结果集(集合)
//循环输出每一条记录
while(rs.next())
{
//输出每个字段
System.out.println(rs.getString("ID")+"\t"+rs.getString("NAME"));
}
System.out.println("读取完毕");
#8
不知道解决了没。
你刚插入,然后就去查询,这样没有意思。 数据是需要持久化到数据库中,你需要重新链接就能查询出来了。jdbc的效率还是很快的。
你刚插入,然后就去查询,这样没有意思。 数据是需要持久化到数据库中,你需要重新链接就能查询出来了。jdbc的效率还是很快的。
#9
你应该先判断rs是否为空rs.next(),然后才可以取得的值;
你可以用if或者while都可以判断是否为空,然后在获取对应字段值!
你可以用if或者while都可以判断是否为空,然后在获取对应字段值!
#10
除去注释,就可以了。但是如果我现在不知道ID值是多少,从其他方法导入ID值,在进行查询该怎么做?