如何获得 select结果集 C#

如何获得 select结果集 C#,第1张

需要使用ADONET知识

这个里面需要掌握的几个对象:SqlConnection对象和SqlCommand对象,

SqlConnection:用来实现与数据库的连接

SqlCommand:用来实现执行t-sql语句和存储过程。

SqlConnection con = new SqlConnection("连接字符串");

conopen();

string sql = "select from ";

SqlCommand cmd = new SqlCommand(sql,con);

SqlDataReader reader = cmdexecuteReader();

ResultSet中的诸多get方法都有重载,比如getString()这个方法,里面可以填入int类型的下表,也可以填入字段名称,比如getString(0)或者getString(“user_name”),前者为user_name字段的下表,后者为字段名称,如果查询语句使用了别名,则字段名称要改为别名

直接使用union好像可以实现俩表联合查询并去掉重复返回一个集

把这个结果集再当成一个表

SELECT NAME,COUNT() FROM (结果集语句) A

GROUP BY NAME

resultset不可以获取里面的条数因为resultset是保持数据库连接时存在,是一个只进只读的对象,相当一个数据行的指针没有大小的。Result这个对象有大小。其方法是getRowCount()

三个办法可以解决:

1改用select count语句,然后直接从ResultSet里面获取结果:

try {

Statement statement = connectioncreateStatement();

ResultSet resultSet = statementexecuteQuery("select count() as rowCount from tableName");

resultSetnext();

int rowCount = resultSetgetInt("rowCount");

} catch (Exception e) {

// TODO: handle exception

eprintStackTrace();

}

但是,执行数据库查询不光要知道结果的行数,往往接下来还要用到查询结果。如果用此方法,还需要再执行一次select语句,才能得到想要的结果集,这样,就多了一次数据库查询,大大降低了执行速度。

2遍历Resultset,用一个变量记录行数。代码如下:

int count = 0;

try {

while(resultSetnext()){

count = count + 1;

}

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1printStackTrace();

}

这样获取的count值就是结果集的行数。然而,这种方法同第一种方法的问题一样,不能再使用结果集了。因为这时候指针已经移动到结果集的外面了,不再指向任何记录。

3知道了第二种方法中问题的原因,就知道如何更好地解决这个问题了。第二种方法的问题在于返回的结果集中的指针不能自由移动,幸好java提供了选择,可以创建指针可以自由移动的结果集,所需要做的只有一件事,就是在创建Statement的时候,加上两个参数:

try {

//Statement statement = connectioncreateStatement();

Statement statement = connectioncreateStatement(ResultSetTYPE_SCROLL_SENSITIVE,ResultSetCONCUR_UPDATABLE);

ResultSet resultSet = statementexecuteQuery("select from " + tableName);

} catch (Exception e) {

// TODO: handle exception

eprintStackTrace();

}

这样获得的结果集,指针就可以在其中自由移动。然后,就可以用如下方法获取结果集的行数:

int rowCount = 0;

try {

resultSetlast();

rowCount = resultSetgetRow();

} catch (Exception e) {

// TODO: handle exception

eprintStackTrace();

}

其中resultSetlast()就是将指针移动到结果集的最后一条记录;然后用resultSetgetRow()获取指针当前所在的行号(从1开始)

如果接下来要使用结果集,别忘了将指针移到第一行:

resultSetfirst();

既然结果集是可滚动的,当然可以用absolute()方法访问指定行号的记录:

boolean javasqlResultSetabsolute(int row) throws SQLException

其中row参数可正可负,具体含义查一下ResultSet的absolute()方法就知道了。

resultgetrows不是获取trans流程里面‘流动’的数据的。

trans里面有个‘复制记录到结果’插件,输出到里面的数据,通过resultgetrows就能获取。java中获取结果集ResutSet的总条数,可以直接使用其提供的getRow方法来取得,实例如下:

晕,有上面这么麻烦吗

1\打开企业管理器

2\展开左边的树结构,直到看到database

3\右击database,在d出菜单中找一个项,最后是(K)的,后面还有个三角形的

4\鼠标指向这一项,又出现一个菜单,其中有一个项,最后是(A)的,点击它,就打开附加数据库的窗口了

5\在这个窗口内附加数据库,就OK了

以上就是关于如何获得 select结果集 C#全部的内容,包括:如何获得 select结果集 C#、java 获取ResultSet结果集中字段别名的数据。怎么做到、求指点、谢谢、如何使用SQL语句获取这个条件的结果集(俩表)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9295391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存