用的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数据库 帮忙步骤讲解以及代码参考等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)