如何用Java获得数据库的返回值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Java获得数据库的返回值相关的知识,希望对你有一定的参考价值。
现在用Java连接oracle数据库,比如有select * from emp 语句,怎么用ResultSet获取它的返回值连同列名称,如何没有查询到又该怎么获取,oracle的返回值,还有其它的增删该操作,如何没有执行成功,该怎么获取数据库的返回提示信息
前面的人回答了,你问怎么获取返回信息,我就回答这个吧:如果你的执行不成功,系统会抛给你异常的,你在数据库操作的地方加上,try 你的代码catch(Excetion e)
System.out.println(e.getMessage());
//打印错误信息,你所说的错误信息都封装在了e这个Exception对象里头,这个就是java的面向对象,是java给你封装好了的对象,你可以直接用。
还有不明白的可以追问追问
如果有一个update 操作,如何更新成功,数据库会提示说影响行数为一行,能不能把这句话取出来,或是有一个delete操作,数据库提示已删除几行,像这样的信息怎么从数据库中取出来
追答方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
------------------返回值就是 受影响的条数
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
方法中通过下面的代码来获取数据库的返回值:
String sql="select * from emp";
conn=DBConnection.getConnection();
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
同理,增删该操作只需要将select * from emp换为对应的sql语句就可以了。
希望对你有帮助!追问
我是向问比如:增加了数据,怎么从数据库获取增加成功的信息
追答你这个问的不清楚,增加了什么数据?就在emp表中增加了数据吗?再次执行程序时,程序会自动读取增加的数据的,这个就不用担心了。
本回答被提问者采纳 参考技术B statement 和preparestatement两个你可以试着用一下。。。。 参考技术C 建议你百度一下看看相关书籍,java数据库编程,理解其原理;而且SQL语句一般不写成 SELECT * 这种方式是不优化的,增加了数据库的负担,效率低。
针对哪个列就写哪个列的;
如何用 func 委托替换 Action 委托,将值返回给函数
【中文标题】如何用 func 委托替换 Action 委托,将值返回给函数【英文标题】:How to replace Action delegate with a func delegate return a value to function 【发布时间】:2020-01-27 18:17:01 【问题描述】:我有一个名为 CompleteDownload 的函数,它接受 int 参数,我想在这个函数中打印百分比
public void CompletedDownload(int percentage)
Console.WriteLine(mID+":"+percentage+"% Loading is Completed");
我有一个功能:
public void LoadProcedure(int n,Action<int> inAction)
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for(int i=0;i<=n;i++)
if(i==n/4)
inAction(i);
我想使用 func 委托将 i 值返回给 Completeddownload 函数,方法是什么
Loading loading=new Loading();
loading.LoadProcedure(100,display.CompletedDownLoad);
还帮助我主要如何指定它。
【问题讨论】:
您能否请edit 澄清为什么不能使用Func<…>
?
如何在上面的上下文中使用它先生你可以指定它
【参考方案1】:
在您的示例中,您似乎不需要对响应执行任何操作。因此,您无需尝试从 CompletedDownload
方法返回值,而是可以处理您的操作并在满足条件时简单地中断循环。
public void LoadProcedure(int n, Action<int> inAction)
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for (int i = 0; i <= n; i++)
if (i == n / 4)
inAction(i);
break;
这将运行您的操作,退出循环并返回调用方法。
如果您绝对需要返回触发操作的输入变量,只需将LoadProcedure
的返回类型从 void 更改为 int 并返回结果。
var result = loading.LoadProcedure(100,display.CompletedDownLoad);
public int LoadProcedure(int n, Action<int> inAction)
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for (int i = 0; i <= n; i++)
if (i == n / 4)
inAction(i);
return i;
无需将inAction
更改为Func<>
,因为您目前没有在inAction 中进行任何计算。
【讨论】:
先生,对于同一个例子,我怎样才能用 func 委托替换动作委托 @Rock 您当前的示例不支持 Func 用例,但我添加了一个附加示例来返回触发回调的值。以上是关于如何用Java获得数据库的返回值的主要内容,如果未能解决你的问题,请参考以下文章