网站建设资讯

NEWS

网站建设资讯

java处理数据源代码 java stream数据源

怎样用java代码把数据导入到数据库中

Java可以使用JDBC对数据库进行读写。JDBC访问一般分为如下流程:

十多年的印江网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整印江建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“印江网站设计”,“印江网站推广”以来,每个客户项目都认真落实执行。

1、加载JDBC驱动程序:

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),

这通过java.lang.Class类的静态方法forName(String className)实现。

例如:

try{

//加载MySql的驱动类

Class.forName("com.mysql.jdbc.Driver") ;

}catch(ClassNotFoundException e){

System.out.println("找不到驱动程序类 ,加载驱动失败!");

e.printStackTrace() ;

}

成功加载后,会将Driver类的实例注册到DriverManager类中。

2、提供JDBC连接的URL

?连接URL定义了连接数据库时的协议、子协议、数据源标识。

?书写形式:协议:子协议:数据源标识

协议:在JDBC中总是以jdbc开始

子协议:是桥连接的驱动程序或是数据库管理系统名称。

数据源标识:标记找到数据库来源的地址与连接端口。

例如:(MySql的连接URL)

jdbc:mysql://localhost:3306/test?useUnicode=truecharacterEncoding=gbk ;

useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为

gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。

3、创建数据库的连接

?要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。

?使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。

例如:

//连接MySql数据库,用户名和密码都是root

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

String username = "root" ;

String password = "root" ;

try{

Connection con =

DriverManager.getConnection(url , username , password ) ;

}catch(SQLException se){

System.out.println("数据库连接失败!");

se.printStackTrace() ;

}

4、创建一个Statement

?要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:

1、执行静态SQL语句。通常通过Statement实例实现。

2、执行动态SQL语句。通常通过PreparedStatement实例实现。

3、执行数据库存储过程。通常通过CallableStatement实例实现。

具体的实现方式:

Statement stmt = con.createStatement() ;

PreparedStatement pstmt = con.prepareStatement(sql) ;

CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;

5、执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute

1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。

2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等

3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。

具体实现的代码:

ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;

int rows = stmt.executeUpdate("INSERT INTO ...") ;

boolean flag = stmt.execute(String sql) ;

6、处理结果

两种情况:

1、执行更新返回的是本次操作影响到的记录数。

2、执行查询返回的结果是一个ResultSet对象。

ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。

使用结果集(ResultSet)对象的访问方法获取数据:

while(rs.next()){

String name = rs.getString("name") ;

String pass = rs.getString(1); // 此方法比较高效(列是从左到右编号的,并且从列1开始)

}

7、关闭JDBC对象

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:

1、关闭记录集

2、关闭声明

3、关闭连接对象

if(rs != null){ // 关闭记录集

try{

rs.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

if(stmt != null){ // 关闭声明

try{

stmt.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

if(conn != null){ // 关闭连接对象

try{

conn.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

Java的Ajax后台处理数据和返回数据代码?

1新建一个servlet xml中相应配置(一般自动)

2创建service方法

3接受参数,做操作,返回数据

比如页面发送ajax请求到SomeServlet

$.post("SomeServlet的请求路径",{param:"param"},function(data){ //data为返回的e799bee5baa6e997aee7ad94e58685e5aeb931333337613931数据以json形式 alert(data.id + " " + data.name + " " + data.age );},"json");

Servlet

public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String param = request.getParameter("param");//获取参数 //你的操作 //返回数据 String json = "{\"id\":1,\"name\":\"张三\",\"age\":18}"; out.print(json);}

Java连接数据库问题(附代码)

问题可能出在这里:

你的v2没有初始化就使用了,导致这句 v2.add(hang);会出现空指针异常;

而你在后边对v2又进行了初始化:v2 = new Vector();但此时的v2是空的,里面没有数据。

解决方法:

将 v2 = new Vector(); 这句放到链接数据库前,也就是在使用前进行初始化。

(高分)急求连接数据库的JAVA学生信息管理系统源代码

数据库连接(Connection)

数据库连接

获取数据库连接有两种方法,一种是通过驱动程序管理器DriverManager类,另一种则是使用DataSource接口。这两种方法都提供了了一个getConnection方法,用户可以在程序中对它们进行相应处理后调用这个方法来返回数据库连接。

• DriverManager类

• DataSource接口

• Connection接口

• JDBC URL

jdbc:subprotocol:subname

• 驱动程序注册方法

(1)调用Class.forName方法

(2)设置jdbc.drivers系统属性

• DriverManager方法

DriverManager类中的所有方法都是静态方法,所以使用DriverManager类的方法时,不必生成实例。

DriverManager

• getConnection方法

作用是用于获取数据库连接,原型如下:

public static Connection getConnection(String url)

throws SQLException;

public static Connection getConnection(String url, String user, String password)

throws SQLException;

public static Connection getConnection(String url, Properties info)

throws SQLException;

• 使用DriverManager的getConnetion方法

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conn = DriverManager.getConnection

("jdbc:odbc:sqlserver", "sa", "sa");

• 使用设置jdbc.drivers系统属性的方法

java -Djdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver test.java

DataSource 接口

……

//从上下文中查找数据源,并获取数据库连接

Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("sqlserver");

Connection conn = ds.getConnection();

//查询数据库中所有记录

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM student");

……

Connection 接口

Connection接口代表了已经建立的数据库连接,它是整个JDBC的核心内容。Connnection接口中的方法按照它们所实现的功能,可以分为三类:

• 生成数据库语句

• 管理数据库事务

• 获取数据库信息

生成数据库语句

JDBC将数据库语句分成三种类型 :

• 生成Statement 语句 :

Connection.createStatement()

• 生成PreparedStatement 语句 :

Connection. prepareStatement()

• 生成CallableStatement 语句 :

Connection. prepareCall ()

管理数据库事务

• 默认情况下,JDBC将一条数据库语句视为一个完整的事务。可以关掉默认事务管理:

public void setAutoCommit(Boolean autoCommit) throws SQLException;

将autoCommit的值设置为false,就关掉了自动事务管理模式

• 在执行完事务后,应提交事务:

public void commit() throws SQLException;

• 可以取消事务:

public void rollback() throws SQLException;

第二讲 第四部分

数据库语句

数据库语句

JDBC数据库语句共有三种类型:

• Statement:

Statement语句主要用于嵌入一般的SQL语句,包括查询、更新、插入和删除等等。

• PreparedStatement:

PreparedStatement语句称为准备语句,它是将SQL语句中的某些参数暂不指定,而等到执行时在统一指定。

• CallableStatement:

CallableStatement用于执行数据库的存储过程。

Statement 语句

• executeQuery方法

• executeUpdate方法

• execute方法

• close方法

executeQuery方法

• executeQuery方法主要用于执行产生单个结果集的SQL查询语句(QL),即SELECT语句。executeQuery方法的原型如下所示:

• public ResultSet executeQuery(String sql) throws SQLException;

executeUpdate方法

• executeUpdate方法主要用于执行 INSERT、UPDATE、DELETE语句,即SQL的数据操作语句(DML)

• executeUpdate方法也可以执行类似于CREATE TABLE和DROP TABLE语句的SQL数据定义语言(DDL)语句

• executeUpdate方法的返回值是一个整数,指示受影响的行数(即更新计数)。而对于CREATE TABLE 或 DROP TABLE等并不操作特定行的语句,executeUpdate的返回值总为零。

execute方法

execute方法用于执行:

• 返回多个结果集

• 多个更新计数

• 或二者组合的语句

execute方法

• 返回多个结果集:首先要调用getResultSet方法获得第一个结果集,然后调用适当的getter方法获取其中的值。要获得第二个结果集,需要先调用getMoreResults方法,然后再调用getResultSet方法。

• 返回多个更新计数:首先要调用getUpdateCount方法获得第一更新计数。然后调用getMoreResults,并再次调用getUpdateCount获得后面的更新计数。

• 不知道返回内容:如果结果是ResultSet对象,则execute方法返回true;如果结果是int类型,则意味着结果是更新计数或执行的语句是DDL命令。

execute方法

为了说明如果处理execute方法返回的结果,下面举一个代码例子:

stmt.execute(query);

while (true) {

int row = stmt.getUpdateCount();

//如果是更新计数

if (row 0) {

System.out.println("更新的行数是:" + row);

stmt.getMoreResults();

continue;

}

execute方法

//如果是DDL命令或0个更新

if (row == 0) {

System.out.println("没有更新,或SQL语句是一条DDL语句!");

stmt.getMoreResults();

continue;

}

//如果是一个结果集

ResultSet rs = stmt.getResultSet;

if (rs != null) {

while (rs.next()) {

// 处理结果集

. . .

}

stmt.getMoreResults();

continue;

}

break;

}

PreparedStatement 语句

登录一个网站或BBS时 :

• 使用Statement语句

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery

(“SELECT password FROM userinfo

WHERE id=userId");

• 使用PreparedStatement语句

PreparedStatement pstmt=conn.prepareStatement

(“SELECT password FROM userinfo

WHERE id=?");

pstmt.setString(1, userId);

PreparedStatement语句

• 常用的setter方法

public void setBoolean(int parameterIndex, boolean x) throws SQLException;

public void setByte(int parameterIndex, byte x) throws SQLException;

public void setShort(int parameterIndex, short x) throws SQLException;

public void setInt(int parameterIndex,int x) throws SQLException;

public void setLong(int parameterIndex, long x) throws SQLException;

public void setFloat(int parameterIndex, float x) throws SQLException;

public void setDouble(int parameterIndex, double x) throws SQLException;

public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException;

public void setString(int parameterIndex, String x) throws SQLException;

public void setBytes(int parameterIndex, byte[] x) throws SQLException;

public void setDate(int parameterIndex, Date x) throws SQLException;

public void setTime(int parameterIndex, Time x) hrows SQLException;

public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException;

PreparedStatement语句

• PreparedStatement接口是由Statement接口扩展而来的,重写了executeQuery方法、executeUpdate方法和execute 方法

• public ResultSet executeQuery() throws SQLException

• public int executeUpdate() throws SQLException

• public boolean execute() throws SQLException

CallableStatement语句

• CallableStatement语句是由Connection接口的prepareCall方法创建的,创建时需要传入字符串参数,参数的形式为:

• {call procedure_name[(?, ?, ...)]}

• {? = call procedure_name[(?, ?, ...)]}

• {call procedure_name}

CallableStatement语句

• 其中的问号是参数占位符,参数共有两种:

• IN参数

• OUT参数

• IN参数使用setter方法来设置

• OUT参数则使用registerOutParameter方法来设置

CallableStatement 语句

CallableStatement cstmt = con.prepareCall

("{call getTestData(?, ?)}");

cstmt.registerOutParameter

(1, java.sql.Types.TINYINT);

cstmt.registerOutParameter

(2, java.sql.Types.DECIMAL, 3);

cstmt.executeQuery();

byte x = cstmt.getByte(1);

java.math.BigDecimal n =

cstmt.getBigDecimal(2, 3);

第二讲 第五部分

结 果 集

结果集

• JDBC为了方便处理查询结果,又专门定义了一个接口,这个接口就是ResultSet接口。ResultSet接口提供了可以访问数据库查询结果的方法,通常称这个接口所指向的对象为结果集。

• 有两种方法得到结果集,一种是直接执行查询语句,将结果存储在结果集对象上;另一种是不存储返回结果,而在需要时调用数据库语句的getResultSet方法来返回结果集

结果集

• 结果集指针

由于返回的结果集可能包含多条数据记录,因此ResultSet 接口提供了对结果集的所有数据记录轮询的方法。结果集自动维护了一个指向当前数据记录的指针,初始时这个指针是指向第一行的前一个位置。 next 方法就是用于向前移动指针的

结果集

• 结果集属性

默认情况下,结果集是一个不可更新集,并且结果集的指针也只能向前移动。也就是说,在得到了一个结果集之后,用户只能按照从第一条记录到最后一条记录的顺序依次向后读取,而不能跳到任意条记录上,也不能返回到前面的记录。不仅如此,结果集的这种轮询只能进行一次,而不能再将指针重置到初始位置进行多次轮询

结果集

• 结果集属性

类型

并发性

有效性

• 属性的设置是在生成数据库语句时通过向生成方法传入相应的参数设定的,而当结果集已经返回时就不能够再改变它的属性了。

结果集生成Statement语句共有三种方法

public Statement createStatement() throws SQLException;

public Statement createStatement

(int resultSetType, int resultSetConcurrency)

throws SQLException;

public Statement createStatement

(int resultSetType, int resultSetConcurrency,

int resultSetHoldability)

throws SQLException;

结果集

• 生成PreparedStatement语句共有六种方法

public PreparedStatement prepareStatement(String sql) throws SQLException;

public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)

throws SQLException;

public PreparedStatement prepareStatement(String sql, int[] columnIndexes)

throws SQLException;

public PreparedStatement prepareStatement(String sql, int resultSetType,

int resultSetConcurrency)

throws SQLException;

public PreparedStatement prepareStatement(String sql, int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

throws SQLException;

public PreparedStatement prepareStatement(String sql. String[] columnNames)

throws SQLException;

结果集

• 生成CallableStatement语句共有三种方法

public CallableStatement prepareCall(String sql)

throws SQLException;

public CallableStatement prepareCall

(String sql, int resultSetType,

int resultSetConcurrency)

throws SQLException;

public CallableStatement prepareCall

(String sql, int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

throws SQLException;

结果集

结果集类型

• 结果集的类型共有三种,TYPE_FORWARD_ONLY类型的结果集只能向前移动指针,而TYPE_SCROLL_INSENSITIVE类型和TYPE_SCROLL_SENSITIVE类型的结果集则可以任意移动指针。后两种类型的区别在于,前者对来自其它处的修改不敏感(静态),而后者则对于别人的修改敏感(动态视图)。

结果集

结果集类型

• 对于可以任意移动指针的结果集,可以用来移动指针的方法包括:

• next 和previous :

• absolute 和relative :参数可正可负

• afterLast 、beforeFirst 、last 和first :

结果集

结果集并发性

• 结果集的并发性共有两种,CONCUR_READ_ONLY的结果集是只读而不可更新的;而CONCUR_UPDATABLE的结果集则是可以通过update方法进行更新的。

• ResultSet接口提供了一组update方法,用于更新结果集中的数据。这些方法与PreparedStatement接口中定义的setter方法一样,也是与类型相对应的。所有的update方法都以update开头 。

• 所有的update方法都有两个参数,第一个参数用于指定更新的列,它可以是列名称也可以是列的序号;第二个参数则表示将要更新列的值。

结果集

结果集并发性

• Statement stmt = conn.createStatement

• (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

• ResultSet rs = stmt.executeQuery("SELECT * FROM student " +

• "WHERE grade=2 AND math60 AND physics60 AND " +

• "chemistry60 AND english60 AND chinese60");

• while(rs.next()){

• rs.updateString("grade", "3");

• rs.updateRow();

• }

结果集

结果集有效性

• 结果集的有效性是指在调用了Connection 接口的commit 方法后,结果集是否自动关闭。所以它只有两个可选值,即HOLD_CURSORS_OVER_COMMIT 和CLOSE_CURSORS_AT_COMMIT 。前者表示调用commit 方法之后,结果集不关闭;而后者则表示关闭结果集。

结果结果集

• 结果集的getter方法

ResultSet接口还提供了一组getter方法,用于返回当前记录的属性值。它们都是以get开头的,后接数据类型。比如,如果要返回一个float类型的列值,则应调用getFloat方法。每一种类型的getter方法都有两种形式,它们的名称相同而参数不同。这两种形式的getter方法都只有一个参数,第一种形式的getter方法参数是String类型的,用于指定列的名称;另外一种形式的getter方法参数则是int类型的,用于指定列的序号。


本文题目:java处理数据源代码 java stream数据源
网址分享:http://njwzjz.com/article/dddjhcd.html