水晶报表 怎么连接sql数据库

水晶报表 怎么连接sql数据库,第1张

用的finereport的,水晶报表应该和FR的也差不多吧

常用有两种方式:

新建数据库,选择JDBC方式连接,然后选择数据库类型,选择驱动器,修改URL

下载第三方jar包,需要使用连接access数据库的第三方jdbc驱动;新建数据库,选择JDBC方式连接,选择数据库类型,选择驱动器,修改URL;连接池属性;点击连接池属性可设置该JDBC数据连接的连接池配置,详细请查看JDBC连接池属性,这里使用默认设置,一般都是用默认设置。输入用户名、密码,测试连接;如果有用户名密码,输入Access数据库用户名与密码,点击左上方的测试连接,提示成功,数据库连接便定义好了。

个人感觉FR的 *** 作简便点

你的报错说你的root造成是空值,对于连接池配置需要2个jar包一个配置文件,如果你都有检查下你的配置文件和你的数据空的信息一样不,表单名字和root的密码,貌似你是jsbc连接的数据库

首先,使用JDBC技术获取数据库连接:

public static Connection getConnection(){

try{

ClassforName("oraclejdbcdriverOracleDriver");

Connection con=DriverManagergetConnection("jdbc:oracle:thin:@127001:1521:orcl", "root", "root");

return con;

}catch(Exception e){

eprintStackTrace();

return null;

}

}

ClassforName(数据库驱动);

这是JVM在加载数据库驱动。

DriverManagergetConnection(url,username,password);

url是指连接数据库的地址。

像上面我写的URL是这样的:jdbc:oracle:thin:@127001:1521:orcl

127001是指本机,也可以用localhost代替,1521是数据库端口号(本人用的是oracle10g),orcl是指oracle_sid。username/password数据库的用户名和密码。有的数据库的url可能不是这样。当然可以去网上查一下就知道了。

这种连接方法是一次请求一次连接,是比较浪费资源的。

像tomcat,weblogic等服务器都带有连接池来避免资源的浪费,而且现在好象有规定,只要是服务器就必须带有连接池。

至于连接池的连接方法,不同的服务器有不同的获得方法。建议你用哪个就去学哪个。

有连接就有关闭数据库,获得数据库连接后一定要记得关闭资源。

public static void close(Connection con){

if(con!=null){

try{conclose();}catch(Exception e){}

}

}

为了方便,不防写成一个方法。

获取连接后,然后使用这个连接去创建相应的Statement来 *** 作数据库。

有Statement,PerparedStatement,CallableStatement这几种statement可以用来创建。

我们先看看Statement的使用。

public static void main(String[] args) {

Connection con=JDBCUtilgetConnection();

Statement stat=null;

ResultSet rs=null;

try{

String sql="select a_id,a_name,a_no from a";

stat=concreateStatement();

rs=statexecuteQuery(sql);

while(rsnext()){

Systemerrprintln(rsgetInt(1)+"/"+rsgetString(2)+"/"+rsgetInt(3));

}

}catch(Exception e){

eprintStackTrace();

}

JDBCUtilclose(rs,stat,con);

}

注释:

stat=concreateStatement();是用连接创建Statement对象。

statexecuteQuery(sql);是执行查询语句。这个方法返回的是一个结果集。即ResultSet。可以将查询出来的结果放入结果集中。

rsnext()这个方法返回的一个boolean类型的值,即当指针能够往下走时,返回true,否则返回false。这样就可以保证能够遍历这个结果集了。

当然这里出现了Statement,ResultSet,那么close()方法也得变化了。

如下:

public static void close(ResultSet rs,Statement stat,Connection con){

if(rs!=null){

try{rsclose();}catch(Exception e){}

}

if(stat!=null){

try{statclose();}catch(Exception e){}

}

if(con!=null){

try{conclose();}catch(Exception e){}

}

}

注意关闭顺序,一定是先ResultSet,后Statement,最后Connection

由于PerparedStatement和CallableStatement都是Statement的实现类,根据JAVA多态的用法,close()方法就算完全写完了,不用改了。

现在来看看结果:

2/all/2

1/hello/1

===================================================================

现在我们用PerparedStatement来查询:

Connection con=JDBCUtilgetConnection();

PreparedStatement stat=null;

ResultSet rs=null;

try{

String sql="select a_id,a_name,a_no from a where a_id=";

stat=conprepareStatement(sql);

statsetInt(1, 1);

rs=statexecuteQuery();

while(rsnext()){

Systemerrprintln(rsgetInt(1)+"/"+rsgetString(2)+"/"+rsgetInt(3));

}

}catch(Exception e){

eprintStackTrace();

}

JDBCUtilclose(rs,stat,con);

这里的sql语句里有一个值是未确定的。这样就可以实现预编译,大大提高了程序的运行效率。流程如下:

stat=conprepareStatement(sql);这个方法就将这个sql语句进行了一次编译,查看有没有什么明显的语法错误等。

如果没错,再通过statsetInt(1, 1);将缺失的值补回去然后再执行sql查询。

PreparedStatement为批处理提供了一系统方法,让批查询、批更新等更加的效率。

让我们看看结果:

1/hello/1

==============================================================

CallableStatement是专门用于处理存储过程的。

如果想深入的学习,建议你去查看相关资料。

1、导入命名空间

using SystemDataSqlClient; //连接SQLServer 数据库专用

2、创建连接

SqlConnection lo_conn = New SqlConnection("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码");

3、打开连接,第2步并没有真正连接数据库

lo_connOpen(); //真正与数据库连接

4、向数据库发送SQL命令要使用SqlCommand:

SqlCommand lo_cmd = new SqlCommand(); //创建命令对象

lo_cmdCommandText = "这里是SQL语句"; //写SQL语句

lo_cmdConnection = lo_con; //指定连接对象,即上面创建的

5、处理SQL命令或返回结果集

lo_cmdExecuteNonQuery(); //这个仅仅执行SQL命令,不返回结果集,实用于建表、批量更新等不需要返回结果的 *** 作。

SqlDataReader lo_reader = lo_cmdExecuteReader();//返回结果集

6、以数据集的方式反回结果集

SqlDataAdapter dbAdapter = new SqlDataAdapter(lo_cmd); //注意与上面的区分开

DataSet ds = new DataSet(); //创建数据集对象

dbAdapterFill(ds); //用返回的结果集填充数据集,这个数据集可以被能 *** 作数据的控件DataBind,其它的就自己发挥了吧

7、关闭连接

lo_connClose();

1、数据库连接数,也就是一个数据库,最多能够同时接受多少个客户的连接

2、在没有数据库连接池的情况下,一个客户,每次访问,就要创建一个数据库连接,执行SQL,获取结果,然后关闭、释放掉数据库连接,问题就在于创建一个数据库连接,是一个很消耗资源,花费很多时间的 *** 作,于是数据库连接池产生了。

3、数据库连接池预先打开一定数量的数据库连接,并维持着连接。

4、当客户要执行SQL语句的时候,从数据库连接池里面,获取一个连接,执行SQL,获取结果,然后把数据库连接,交还给数据库连接池。

5、假如一个session,执行10次独立的 *** 作,那么不使用数据库连接池的,需要创建数据库连接10次,并关闭10次。

6、使用数据库连接池的,直接使用数据库连接池中已经打开好的,直接使用。

以上就是关于水晶报表 怎么连接sql数据库全部的内容,包括:水晶报表 怎么连接sql数据库、sql数据库连接池无法应用、java 怎么连接sql数据库 帮忙步骤讲解以及代码参考等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9705817.html

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

发表评论

登录后才能评论

评论列表(0条)

保存