JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问oracle数据库又专门写一个程序。使开发人员能够更便捷的编写数据库应用程序。
使用JDBC连接数据库简而言之包含了以下四个部分:加载驱动、连接数据库、创建statement对象、执行SQL命令。
JDBC在连接数据库前需要先加载驱动,通过java.lang.Class类的forName()实现驱动的加载。
Class.forName("oracle.jdbc.driver.OracleDriver");
通过java.sql.DriverManager中的getConnection()方法获取一个Connection对象,即为创建一个数据库连接。
Connection conn = DriverManager.getConnection(url,username,passwd);
//url示例
jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc:使用jdbc连接协议
oracle:使用oracle数据库
thin:oracle数据库连接模式,thin模式不需要安装客户端,oci模式需要安装客户端
@127.0.0.1:数据库地址
1521:数据库端口
orcl:数据库实例名
在执行SQL语句前需要先创建statement对象。
Statement stmt = conn.createStatement();
Statement有三种执行SQL语句的方法:
①executeQuery 此方法用来执行select语句,返回查询到的结果集。
②executeUpdate 此方法用来执行insert、update或delete语句以及SQL DDL(数据定义语言)语句,例如create table和drop table。insert、update或delete语句的效果是修改表中零行或多行中的一列或多列。返回值为一个整数,指受到影响的行数(即更新计数)。对于create table或drop table等不操作行的语句,返回值总为零。
③execute 此方法可用于执行任意SQL语句,返回值为boolean型,执行结果为ResultSet返回true,否则返回false。
String query="select * from user where id=1";
ResultSet rs=stmt.executeQuery(query);
通过对ResultSet结果集进行索引获取详细数据信息,或是使用get方法获取指定的字段信息。
while(rs.next()){
System.out.println("编号为:"+rs.getInt("id")+"姓名为:"+rs.getString("username"));
}
在使用完数据库连接后需要立马释放连接,否则时间长时间未关闭连接会导致服务器资源占用,甚至出现宕机状态。
rs.close(); //关闭ResultSet对象
stmt.close(); //关闭Statement对象
conn.close(); //关闭Connection对象
完整JDBC连接Oracle数据库示例
import java.sql.*;
public class jdbctest {
public static void main(String[] args) {
String url= "jdbc:oracle:thin:@127.0.0.1:1521:myorcl";
String user="sys as sysdba";
String password="123";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn= DriverManager.getConnection(url,user,password);
System.out.println("successfully");
Statement stmt=conn.createStatement();
String query="select passwd from users where id=9";
ResultSet rs=stmt.executeQuery(query);
while(rs.next()){
System.out.println("编号为:"+rs.getInt("id")+"姓名为:"+rs.getString("username"));
}
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
口令输入为‘sys as sysdba’,如果只输入sys则会报错java.sql.SQLException: ORA-28009: 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_