完整的代码
public void timesearch() {
textArea.setText("");
String day;
day = (textField_1.getText().trim()); System.out.println(day);
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:project");
pst = conn
.prepareStatement ("select * from storesave where (liushuidanhao like ? ) order by liushuidanhao");
pst.setString(1, day+"%" ); rs=pst.executeQuery();
while(rs.next()){
System.out.println("1");
textArea.setText(textArea.getText() + "流水单号:"
+ rs.getString("liushuidanhao") + " 工单号:"
+ rs.getString("gongdanhao") + " 油漆名称"
+ rs.getString("mingchen") + " 总价"
+ rs.getString("totalprice") + "\n");
}
} catch (Exception ee) {
ee.printStackTrace(); } finally {
conn = null;
rs = null;
pst = null;
} } 我的意思是要做一个模糊查询 SELECT * FROM storesave WHERE liushuidanhao like '20090605%' order by liushuidanhao 直接复制进sql里运行成功
在这里 我传进去的"%" 始终被认为是字符 而不是sql的通配符 导致搜索无记录符合 结果集为空 无法进入循环
麻烦谁能指点一下
已经折腾第3天了。...一点进展都没...
网上也找过 有人说加上[] 就可以 我也试过了
我想这应该不是个很冷门的问题吧?应该遇到的几率还是会满高的吧?
解决方案 »
- 我用httpclient包,模拟发送post请求,已经可以了,但是遇到一种比较特殊的post请求,求解
- 请问IDEA的热键怎么更改啊
- java SQLServer 2000连接问题!!!!
- 有什么好的ECLIPSE的网上教程或者教材给推荐一下,谢谢了
- ×——×请教关于new,Class.forname, getClass().forname()的区别×——×
- 请问怎样得到文件的大小
- java的怪问题?在线等待。。。。。。
- jbuilder4里面怎样响应鼠标右键?
- 请教一个jbulider4的中文问题!
- 主方法中 Thread.sleep ,为什么 catch不执行
- 很小很小一个问题.......麻烦指点一下....
- 一段关于HashTable的代码,实在是不明白
2边都要加上%才可以
我看你定义完sql语句又调用了一个setString方法,之后你的sql语句是不是变化了?你debug一下,最后的执行语句发一下呗
pst = conn
.prepareStatement ("select * from storesave where liushuidanhao like " + day + " order by liushuidanhao");
rs=pst.executeQuery(); 如果是access的可以通配符不一样.
http://jht.cnblogs.com/archive/2006/05/10/396781.html
-------------------------------------------------------- ACCESS模糊查询出现的变态问题,不知道该问题的希望注意,知道内幕的高手还望给小弟一个解释 Thanks在SQL Server中模糊查询通常是这样的Select * from articleTable where authorName like '%jacky%'
但是在Access中用这条语句执行的时候竟然发现查不出结果,怎么可能呢?后来查了下资料,发现问题如下:
要进行模糊查找,则必须使用通配符,ACCESS库的通配符和SQL SERVER的通配符不一样。
ACCESS库的通配符为:
* 与任何个数的字符匹配。
? 与任何单个字母的字符匹配
在SQL Server中的通配符为:
% 与任何个数的字符匹配
- 与单个字符匹配但是又发现,C#连接到Access数据库之后,用这样一条语句Select * from articleTable where authorName like '*jacky*' (注意,这边按照上述通配符的要求将%修改为*了)竟然搜索不到应该存在的N条记录,我靠!怎么可能呢?明明直接在Access中执行的时候是有结果的呀!!!虽然找到了答案(ADO),但是我还是不理解,希望有高手指教以下
可能是你的数据库默认通配符不是'%',加上设置通配符的语句试试
pst = conn
.prepareStatement ("select * from storesave where liushuidanhao like '" + day + "' order by liushuidanhao");
pst = conn
.prepareStatement ("select * from storesave where liushuidanhao like '" + day + "' order by liushuidanhao");
rs=pst.executeQuery(); 最后测试这样成功了
注意多加了2个' '
谢谢
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class TestJdbc { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=testDB"; //连接服务器和数据库sample
String userName = "sa"; //默认用户名
String userPwd = "admin1234567"; //密码
Connection dbConn;
PreparedStatement ps;
ResultSet rs;
String sql = "select * from userTable where user_ID like ? order by user_ID";
String id = "1";
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!"); //如果连接成功 控制台输出Connection Successful!
ps = dbConn.prepareStatement(sql);
ps.setString(1, "%" + id + "%");
rs = ps.executeQuery();
while (rs.next()) {
System.out.println("user_ID:" + rs.getString("user_ID"));
}
} catch (Exception e) {
e.printStackTrace();
}
}}程序运行结果如下:
Connection Successful!
user_ID:1
user_ID:11
user_ID:111
user_ID:1111感觉没什么问题,
应该是每个数据库的问题