创建一个以JDBC连接数据库的程序,包含7个步骤: \x0d\ 1、加载JDBC驱动程序: \x0d\ 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), \x0d\ 这通过javalangClass类的静态方法forName(String className)实现。 \x0d\ 例如: \x0d\ try{ \x0d\ //加载MySql的驱动类 \x0d\ ClassforName("commysqljdbcDriver") ; \x0d\ }catch(ClassNotFoundException e){ \x0d\ Systemoutprintln("找不到驱动程序类 ,加载驱动失败!"); \x0d\ eprintStackTrace() ; \x0d\ } \x0d\ 成功加载后,会将Driver类的实例注册到DriverManager类中。 \x0d\ 2、提供JDBC连接的URL \x0d\ •连接URL定义了连接数据库时的协议、子协议、数据源标识。 \x0d\ •书写形式:协议:子协议:数据源标识 \x0d\ 协议:在JDBC中总是以jdbc开始 \x0d\ 子协议:是桥连接的驱动程序或是数据库管理系统名称。 \x0d\ 数据源标识:标记找到数据库来源的地址与连接端口。 \x0d\ 例如:(MySql的连接URL) \x0d\ jdbc:mysql: \x0d\ //localhost:3306/testuseUnicode=true&characterEncoding=gbk ; \x0d\ useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为 \x0d\ gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。 \x0d\ 3、创建数据库的连接 \x0d\ •要连接数据库,需要向javasqlDriverManager请求并获得Connection对象, \x0d\ 该对象就代表一个数据库的连接。 \x0d\ •使用DriverManager的getConnectin(String url , String username , \x0d\ String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 \x0d\ 密码来获得。 \x0d\ 例如: \x0d\ //连接MySql数据库,用户名和密码都是root \x0d\ String url = "jdbc:mysql://localhost:3306/test" ; \x0d\ String username = "root" ; \x0d\ String password = "root" ; \x0d\ try{ \x0d\ Connection con = \x0d\ DriverManagergetConnection(url , username , password ) ; \x0d\ }catch(SQLException se){ \x0d\ Systemoutprintln("数据库连接失败!"); \x0d\ seprintStackTrace() ; \x0d\ } \x0d\ 4、创建一个Statement \x0d\ •要执行SQL语句,必须获得javasqlStatement实例,Statement实例分为以下3 \x0d\ 种类型: \x0d\ 1、执行静态SQL语句。通常通过Statement实例实现。 \x0d\ 2、执行动态SQL语句。通常通过PreparedStatement实例实现。 \x0d\ 3、执行数据库存储过程。通常通过CallableStatement实例实现。 \x0d\ 具体的实现方式: \x0d\ Statement stmt = concreateStatement() ; \x0d\ PreparedStatement pstmt = conprepareStatement(sql) ; \x0d\ CallableStatement cstmt = \x0d\ conprepareCall("{CALL demoSp( , )}") ; \x0d\ 5、执行SQL语句 \x0d\ Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate \x0d\ 和execute \x0d\ 1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句 \x0d\ ,返回一个结果集(ResultSet)对象。 \x0d\ 2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或 \x0d\ DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等 \x0d\ 3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 \x0d\ 语句。 \x0d\ 具体实现的代码: \x0d\ ResultSet rs = stmtexecuteQuery("SELECT FROM ") ; \x0d\ int rows = stmtexecuteUpdate("INSERT INTO ") ; \x0d\ boolean flag = stmtexecute(String sql) ; \x0d\ 6、处理结果 \x0d\ 两种情况: \x0d\ 1、执行更新返回的是本次 *** 作影响到的记录数。 \x0d\ 2、执行查询返回的结果是一个ResultSet对象。 \x0d\ • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 \x0d\ 行中数据的访问。 \x0d\ • 使用结果集(ResultSet)对象的访问方法获取数据: \x0d\ while(rsnext()){ \x0d\ String name = rsgetString("name") ; \x0d\ String pass = rsgetString(1) ; // 此方法比较高效 \x0d\ } \x0d\ (列是从左到右编号的,并且从列1开始) \x0d\ 7、关闭JDBC对象 \x0d\ *** 作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 \x0d\ 明顺序相反: \x0d\ 1、关闭记录集 \x0d\ 2、关闭声明 \x0d\ 3、关闭连接对象 \x0d\ if(rs != null){ // 关闭记录集 \x0d\ try{ \x0d\ rsclose() ; \x0d\ }catch(SQLException e){ \x0d\ eprintStackTrace() ; \x0d\ } \x0d\ } \x0d\ if(stmt != null){ // 关闭声明 \x0d\ try{ \x0d\ stmtclose() ; \x0d\ }catch(SQLException e){ \x0d\ eprintStackTrace() ; \x0d\ } \x0d\ } \x0d\ if(conn != null){ // 关闭连接对象 \x0d\ try{ \x0d\ connclose() ; \x0d\ }catch(SQLException e){ \x0d\ eprintStackTrace() ; \x0d\ } \x0d\ }
EOS数据库连接关闭原因:释放系统资源,不用的连接该及时关闭,是良好的编程习惯。
SqlDataSource 控件使用 ADONET 类与 ADONET 支持的任何数据库进行交互。这类数据库包括 Microsoft SQL Server(使用 SystemDataSqlClient 提供程序)、SystemDataOleDb、SystemDataOdbc 和 Oracle(使用 SystemDataOracleClient 提供程序)。
并定义使用数据的 SQL 语句或存储过程即可。在运行时,SqlDataSource 控件会自动打开数据库连接,执行 SQL 语句或存储过程,返回选定数据(如果有),然后关闭连接。
存储结构:
关系型数据库按照结构化的方法存储数据, 每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据,这样做的好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高。
但带来的问题就是一旦存入数据后,如果需要修改数据表的结构就会十分困难。而NoSQL数据由于面对的是大量非结构化的数据的存储,它采用的是动态结构,对于数据类型和结构的改变非常的适应,可以根据数据存储的需要灵活的改变数据库的结构。
WebLogic数据库连接已关闭可能是多种原因引起的。以下是一些可能的解决方法:
1 确认数据库是否处于可用状态。WebLogic连接的数据库可能因为各种原因出现异常,如网络中断、服务器宕机、数据库服务停止等,导致数据库连接被关闭。请确认数据库处于可用状态,并重启数据库服务。
2 检查数据库连接池设置。在WebLogic中,数据库连接池是一种用于管理数据库连接的工具,可以在应用程序和数据库之间提供连接复用,提高了应用程序的性能。请检查数据库连接池的设置,特别是最大连接数和空闲连接超时等参数是否正确设置。如果连接池设置不当,可能会导致连接被关闭。
3 根据错误信息调整数据库连接超时时间。如果连接池中连接的空闲时间超过设定的空闲超时时间,连接将会被关闭。可以通过调整数据库连接超时时间缓解这个问题。设置超时时间的方法会因所使用的连接池不同而有所不同,具体请参考WebLogic的官方文档。
4 检查应用程序代码逻辑。应用程序代码逻辑中可能存在处理数据库连接时的错误。例如,应用程序中某个部分可能关闭了数据库连接,而其他部分仍在使用该连接。请检查应用程序代码逻辑,查看是否存在这样的错误。
以上是一些可能导致WebLogic数据库连接被关闭的原因和解决方法,您可以根据实际情况进行分析和调整。
正常的root是向上面的这些一样,所有的root权限都是开启的,但是我之前出现1045问题的原因发现了最底下的Event以及Trigger权限并没有加上
如果想要加上在navicat上有没有权限,这个时候就应该到本地cmd终端中进行权限的添加、
具体的 *** 作:
1 可以进入数据库,但无update权限:
*** 作过程:在WINDOWS的DOS窗口下,进入MYSQL安装目录的BIN目录,
运行mysqld-nt --skip-grant-tables,当前窗口将会停止。
另外打开一个命令行窗口,执行mysql 如果提示没有这个命令,先进入MYSQL的安装位置下BIN目录再运行mysql
>use mysql
>update user set Update_priv ='Y' where user = 'root';
如果root 没有所有数据的权限
更新的MYSQLUSER表的所有字段中为N的为Y就可以了。
update user set Select_priv ='Y' where user = 'root';
update user set Insert_priv ='Y' where user = 'root';
update user set Update_priv ='Y' where user = 'root';
update user set Delete_priv ='Y' where user = 'root';
update user set Create_priv ='Y' where user = 'root';
update user set Drop_priv ='Y' where user = 'root';
update user set Reload_priv ='Y' where user = 'root';
update user set Shutdown_priv ='Y' where user = 'root';
update user set Process_priv ='Y' where user = 'root';
update user set File_priv ='Y' where user = 'root';
update user set Grant_priv ='Y' where user = 'root';
update user set References_priv ='Y' where user = 'root';
update user set Index_priv ='Y' where user = 'root';
update user set Alter_priv ='Y' where user = 'root';
update user set Show_db_priv ='Y' where user = 'root';
update user set Super_priv ='Y' where user = 'root';
update user set Create_tmp_table_priv ='Y' where user = 'root';
update user set Lock_tables_priv ='Y' where user = 'root';
update user set Execute_priv ='Y' where user = 'root';
update user set Repl_slave_priv ='Y' where user = 'root';
update user set Repl_client_priv ='Y' where user = 'root';
update user set Create_view_priv ='Y' where user = 'root';
update user set Show_view_priv ='Y' where user = 'root';
update user set Create_routine_priv ='Y' where user = 'root';
update user set Alter_routine_priv ='Y' where user = 'root';
update user set Create_user_priv ='Y' where user = 'root';
update user set Event_priv ='Y' where user = 'root';
update user set Trigger_priv ='Y' where user = 'root';
解释:
数据库(database):物理 *** 作系统文件或磁盘( disk)的集合。使用Oracle 10g 的自动存储管理(Automatic Storage Management,ASM)或RAW 分区时,数据库可能不作为 *** 作系统中单独的文件,但定义仍然不变。
实例(instance):一组Oracle 后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。这里可以维护易失的、非持久性内容(有些可以刷新输出到磁盘)。就算没有磁盘存储,数据库实例也能存在。也许实例不能算是世界上最有用的事物,不过你完全可以把它想成是最有用的事物,这有助于对实例和数据库划清界线。
这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上,准确地讲,实例在其整个生存期中最多能装载和打开一个数据库!
补充:
一般来说,我们的一个数据库对应一个实例,但在集群RAC情况下,共享数据库文件时,一个数据库是可以被多个实例同时使用的。
演示启动xxx实例,挂接数据库,打开数据库,关闭数据库、卸载数据库、关闭实例的过程。
1、为了能进行以上 *** 作,oracle的监听必须首先启动,这样,我们才有机会连接到oracle服务器端。可以通过如下命令进行:lsnrctl start;
2、oracle启动,windows下通常在服务里启动oracle,一般情况下同时启动相关实例,但也可以设置启动oracle时,不启动任何指定实例,这样oracle的启动速度相当快。
3、设定我们需要启动的相关实例。在console窗口中,输入 set oracle_sid=xxx (unix环境下用export命令)
4、用/nolog方式,进入sqlplus。 在console窗口中,输入 sqlplus /nolog ,然后回车,则进入sqlplus环境。
5、输入命令 connect sys as sysdba 回车后,提示输入口令,直接回车,则以sysdba的角色连接到oracle的空闲实例。
6、输入命令 startup nomount 回车,则启动了xxx实例,由set oracle_sid=xxx设置。
7、输入命令 alter database mount 回车,则将相应的数据库挂接到xxx实例。
8、输入命令 alter database open 回车,则打开了相应数据库。
9、输入命令 shutdown,则关闭数据库、卸载数据库、关闭实例。
以上就是关于java中使用JDBC完成数据库 *** 作的基本步骤是什么全部的内容,包括:java中使用JDBC完成数据库 *** 作的基本步骤是什么、EOS数据库连接关闭原因、weblgic数据库连接已关闭等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)