怎么用java程序对数据库进行模糊查询

怎么用java程序对数据库进行模糊查询,第1张

jsp中使用输入框获取要模糊查询的查询条件,提交到后台,假设为:abc;sql语句中,将查询条件传入,拼接sql语句,类似于:select from table_name where column_name like '%abc%'

1 JDBC连接串要有字符集设置
jdbc:sybase:Tds:192168311:5000/Wfis_dbcharset=cp936
我项目中的写法:
Dburl=jdbc:sybase:Tds:angkor[服务器名或IP]:5000/angkor[数据库名]charset=eucgb
2 服务器配置成cp936
(3) 因为上面的列表中没有安装cp936,所以就安装cp936字符集
进入目录C:\sybase\charsets\cp936
运行命令 charset -Usa -Plongtop binarysrt cp936
运行完成后,系统就安装了cp936字符集
(4) 验证是否确实安装了cp936字符集
isql -Usa -Plongtop
>use master
>go
>select id,name from syscharsets
>go
id name
(5) 把系统的当前缺省字符集设置为cp936
>sp_configure "default char",171
>go
In changing the default sort order, you have also reconfigured SQL Server's
default character set
Parameter Name Default Memory Used Config Value
Run Value Unit Type
------------------------------ ----------- ----------- ------------
----------- -------------------- ----------
default character set id 2 0 171
2 id static
(1 row affected)
Configuration option changed Since the option is static, Adaptive Server must
be rebooted in order for the change to take effect
Changing the value of 'default character set id' to '171' increases the amount
of memory ASE uses by 6 K
(return status = 0)
(6) 重启Sybase服务,使更改生效
第一次重启,系统会对已经存在的数据进行转换,转换完成后自动停止服务,只要再次启动服务就可以了。
(7) 更改DB客户端的字符集
DBArtisan中要更改客户端的字符集为cp936才能连接cp936的服务器
通过菜单\Logfile\Options打开对话框,选择Connection标签,
更改Client Character输入框的值为cp936。
数据库的charset修改为cp936时,使用isql按如下的方式
isql -Usa -Plongtop -Sdbserver -Jcp936

一、放jar包

放在WEB-INF/lib下和通过build path导入两种方式

第一种:放在WEB-INF/lib下

在工程目录中找到WebContent—>WEB-INF------>lib文件夹,将下载好的JDBC放到该文件夹下,如下图所示:

将jar包放在WEB-INF/lib下,其他项目需要这些jar包的时候,便会通过Tomcat找到并使用了

因为tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式。

第二种:通过build path导入

右键项目名,点击Build path—Configure Build Path…-----Propertise ,在java build path中的Libraries分页中点击Classpath选择Add JARs…,选择我们要添加的jar包导入,Apply----Apply and Close即可,如下图:

将jar包通过build path导入只是放在了我们这个项目中,其他项目中不能使用该jar包

二、检测数据库连接java

我是在数据库中建了一个student表:

添加数据:

连接数据库并通过eclipse读取数据:

数据库名称:sqldstudent

数据包名称:student

端口号:3306

用户名:root

密码:

代码如下:

package sqldstudent;

import javasqlConnection;

import javasqlDriverManager;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

public class main {

   public static void main(String[] args) {

       //声明Connection对象

       Connection con;

       //驱动程序名

       String driver = "commysqljdbcDriver";

       //URL指向要访问的数据库名mydata

       String url = "jdbc:mysql://localhost:3306/mysql";

       //MySQL配置时的用户名

       String user = "root";

       //MySQL配置时的密码

       String password = "";

       //遍历查询结果集

       try {

           //加载驱动程序

           ClassforName(driver);         

           //1getConnection()方法,连接MySQL数据库!!

           con = DriverManagergetConnection(url,user,password);

           if(!conisClosed())

               Systemoutprintln("Succeeded connecting to the Database!");

           //2创建statement类对象,用来执行SQL语句!!

           Statement statement = concreateStatement();

           //要执行的SQL语句

           String sql = "select from student";

           //3ResultSet类,用来存放获取的结果集!!

           ResultSet rs = statementexecuteQuery(sql);

           Systemoutprintln("--------------------------------------");

           Systemoutprintln("执行结果如下所示:");

           Systemoutprintln("------------------------");

           Systemoutprintln("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "年龄");

           Systemoutprintln("--------------------------------------");

           String name= null;

           String id = null;

           String sex = null;

           String age = null;

           while(rsnext()){

          //获取sno这列数据

               id = rsgetString("sno");

               //获取sname这列数据

               name = rsgetString("sname");

               //获取sex这列数据

               sex = rsgetString("sex");

               //获取age这列数据

               age = rsgetString("age");

               //输出结果

               Systemoutprintln(id + "\t" + name + "\t" + sex + "\t" + age);

           }

           rsclose();

           conclose();

       } catch(ClassNotFoundException e) { 

           //数据库驱动类异常处理

           Systemoutprintln("Sorry,can`t find the Driver!"); 

           eprintStackTrace(); 

           } catch(SQLException e) {

           //数据库连接失败异常处理

           eprintStackTrace();

           }catch (Exception e) {

           // TODO: handle exception

           eprintStackTrace();

       }

       finally{

           Systemoutprintln("数据库数据成功获取!!");

       }

   }

}

结果:

1、登录Oracle服务器,切换到oracle用户下

#su - oracle

注:需要进入到命令行模式下

2、进入到sqlplus接口

$sqlplus '/as sysdba'

注意:使用角色sysdba

3、查询alter日志目录

show parameter dump

4、找到alert日志

Systemoutprintln(rsgetString("UserName") + "\t" + rsgetString("PassWord"));出错了。
按你SQL看你数据库中用户名字段为LoginName,所以只要把rsgetString("UserName")改为rsgetString("LoginName")就可以了。

程序写的有问题,出现了javasqlSQLException: No data found,一个可能是从ResultSet中获取值时变量名称写错了,第二个可能是重复获取了(就是如果没有next的话,不能从ResultSet中多次获取同一个参数);你再仔细检查下吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12822999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存