如何获得 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的元素来获得ResultSet的总行数

示例代码如下:

ResultSet rs;

int rowCount = 0;

while(rsetnext()){

rowCount++;

}

方法二:利用sql语句中的count函数获得ResultSet的总行数

示例代码如下:

String sql = "select count() record_ from ( select from yourtable t where tcolumn_ = 'value_' )";

ResultSet rs = psexecuteQuery(sql);

int rowCount = 0;

if(rsnext()){

rowCount=rsgetInt("record_");

}

方式一

当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误 *** 作

在这里插入描述

方式二

使用shell脚本执行sql

1 先找到达梦数据库安装位置吧

[root@localhost ~]# ss -nlp |grep 5236

tcp LISTEN 0 128 [::]:5236 [::]: users:(("dmserver",pid=103380,fd=4))

[root@localhost ~]# ps -ef|grep dmserver

root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver

dmdba 103380 1 8 13:36 00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/dmini -noconsole

1

2

3

4

5

1

2

3

4

5

2 直接在linux上执行shell命令执行sql脚本

21 # disql username/password:port

使用这个命令可以进入sql控制台

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 5524(ms)

disql V8

SQL>

进入SQL>后:

直接输入sql语句,使用英文分号结尾,回车执行。

使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)

使用“start sql文件路径”,可以执行sql脚本文件。

22 # disql username/password:port `sql文件位置

使用这个命令可以执行sql脚本

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/testsql

[root@localhost sql]#

1

2

1

2

但需注意

这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。

这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。

23 达梦sql脚本注意事项

目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束

例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 6121(ms)

disql V8

SQL> create schema test;

2

3 /

*** 作已执行

已用时间: 26698(毫秒) 执行号:700604

SQL>

sql脚本示例:

-- 创建schema

CREATE SCHEMA DB_ZFBA_MOBILE;

/

-- 执行过程

begin

if exists(select 1 from DBA_TAB_COLUMNS where OWNER='DB_ZFBA_MOBILE' AND TABLE_NAME='T_ZJTQD') then

EXECUTE immediate 'drop table DB_ZFBA_MOBILET_ZJTQD';

end if;

end;

/

create table DB_ZFBA_MOBILET_ZJTQD

(

"C_BH" char(32) NOT NULL, -- 主键

"C_BH_AJ" varchar2(32) NULL, -- 案件编号

……

"DT_ZHXGSJ" datetime NULL, -- 最后修改时间

constraint PK_T_ZJTQD primary key( C_BH )

);

sql文件结尾添加exit;,保证多个sql文件执行不会中断

3 编写shell脚本

注意:shell脚本一定在linux中编写,windows编写的有些语句执行不成功(目前原因未知)

例如: a=a b=b c=$a$b echo $c 在windows下编写,linux中执行完会输出b

#!/bin/bash

# 请先配置数据库连接信息,再执行此脚本

DM_PATH=/home/dmdba/dmdbms #达梦数据库的安装位置

USERNAME=cpuser #达梦数据库连接用户名

PASSWORD=cpuser123 #达梦数据库连接密码

PORT=5236 #达梦数据库连接端口号

# 下面的信息请不要随意修改

CONNECT_INFO=$USERNAME/$PASSWORD:$PORT

echo "连接信息:"$CONNECT_INFO

# STEP 1

echo "开始执行---- sql/02_创建数据库对象/00CS_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00CS_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/00CS_GSYSsql"

# STEP 2

echo "开始执行---- sql/02_创建数据库对象/01CT_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01CT_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/01CT_GSYSsql"

# STEP 3

echo "开始执行---- sql/02_创建数据库对象/02CC_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02CC_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/02CC_GSYSsql"

# STEP 4

echo "开始执行---- sql/02_创建数据库对象/03CI_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03CI_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/03CI_GSYSsql"

# STEP 5

echo "开始执行---- sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql >> DB_DMlog

echo "执行完成---- sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql"

# STEP 6

echo "开始执行---- sql/03_初始化数据/02I_T_Aty_Code_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02I_T_Aty_Code_GSYSsql >> DB_DMlog

echo "执行完成---- sql/03_初始化数据/02I_T_Aty_Code_GSYSsql"

# Complete

echo "SQL全部执行完成---- 日志请查看DB_DMlog"

执行完成后,通过shell控制台和DB_DMlog日志可以分析sql脚本是否执行成功。

运用聚类分析法主要做好分析表达数据:1、通过一系列的检测将待测的一组基因的变异标准化,然后成对比较线性协方差。2、通过把用最紧密关联的谱来放基因进行样本聚类,例如用简单的层级聚类(hierarchicalclustering)方法。

当我们执行数据库查询返回一个ResultSet的时候,很多情况下我们需要知道这个ResultSet的大小,即它的行数和列数。我们知道它的列数可以通过resultSetgetMetaData()getColumnCount()很容易地得到,然而,java API没有提供直接访问ResultSet行数的接口。

这个时候,有三个办法可以解决:

1改用select count语句,然后直接从ResultSet里面获取结果:try{Statement statement = connectioncreateStatement();

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

resultSetnext();introwCount = resultSetgetInt("rowCount");}catch(Exception e) {//TODO: handle exception

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

2遍历Resultset,用一个变量记录行数。代码如下:intcount = 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();}这样获得的结果集,指针就可以在其中自由移动。然后,就可以用如下方法获取结果集的行数:introwCount = 0;try{resultSetlast();

rowCount = resultSetgetRow();}catch(Exception e) {//TODO: handle exception

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

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

resultSetfirst();

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

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

你先要连接到数据库吧。。

ClassforName("数据库驱动程序");

Connection conn=DriverManagergetConnection("数据库url","数据库名字","数据库密码");

PreparedStatement ps=connPreparedStatement(sql);

ResultSet rs=psexecuteQuery();

sql是你的执行语句,rs就是结果集

以上就是关于如何获得 select结果集 C#全部的内容,包括:如何获得 select结果集 C#、java中如何获取ResultSet rs结果集中的条数、达梦数据库shell脚本怎么获取查询语句结果集等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9714673.html

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

发表评论

登录后才能评论

评论列表(0条)

保存