怎么获取resultset一行的列数

怎么获取resultset一行的列数,第1张

列数可以通过resultSetgetMetaData()getColumnCount()获得。

行数可以通过

resultSetlast();

rowCount = resultSetgetRow();

使用函数公式获取。

知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下。这样可以避免很多的错误,并且可以提高效率。

1、有时可能会比实际数大一些,原因是如果你把最后几行(列)数据清除后(非整行或整列删除),用命令仍返回未清除前的值。

2、只能计算出一列(行)的最后一个单元格所在的行(列)数。本例是只返回A列最后一个单元格所占的行数。

gridviewRows[]Cells[]Controls[]这个东西是用来获取gridview在编辑状态下的textbox的(一般是

这个控件,当然还有别的控件)。

rows[]代表行的数组,cells[]代表单元格的数组,controls代表控件(在cells中的控件)。

于是用这三个东西就可准确定位出在gridview中的所有控件了。

再有什么不会可以留言给我或去我的空间也有方法

一个文件不打开是获取不到数据的,一个箱子不打开你能拿到里面的东西吗?

打开是必须的,但是可以让他在后台打开,也就是打开之后你没看到。

有一个比较简单的方法:

在(工作簿B)的VBA中的“ThisWorkBook"中的写入代码:

Private Sub Workbook_Open()

WorkbooksOpen "C:\工作簿Axls" '文件路径 (作用:打开工作簿A)

End Sub

然后在工作簿A中的VBA同样写入代码:

Private Sub Workbook_Open()

ActiveWindowVisible = False '隐藏工作簿A

End Sub

以上的方法可以在打开工作簿B的时候同时打开了工作簿A,

打开工作簿A的同时会把工作簿A隐藏起来。

隐藏之后的工作如果你想再看到的话你可以按

菜单--窗口-取消隐藏-(选中工作簿A)-确定

希望能帮到你

当我们执行数据库查询返回一个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()方法就知道了。

行数 int nItemNum = m_listGetItemCount();

列数 int nHeadNum = m_listGetHeaderCtrl()->GetItemCount();

1、 ListCtrl添加左键单击(NM_CLICK)函数(这个很重要)。

2、 ListCtrl风格设置(一般是网格)。

一般listctrl默认view风格为report,一般在OnInitDialog函数中:

LONG m_lStyle;

m_lStyle = GetWindowLong( m_listm_hWnd , GWL_STYLE);//获取当前窗口style

m_lStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)

m_lStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)

//m_lStyle |= LVS_SHOWSELALWAYS;//一直选中item

m_listSetExtendedStyle( m_lStyle );//设置扩展风格

3、 插入数据

一般在OnInitDialog函数中:

//m_listInsertColumn( 0, "ID", LVCFMT_LEFT, 40 );

//插入列

m_listInsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );

int nRow = m_listInsertItem(0, "11");//插入行

m_listInsertItem(1,"12");

m_listSetItemText(nRow, 1, "jacky");//设置数据

m_listSetItemText(nRow+1, 1, "James");

4、 得到listctrl中所有行的checkbox的状态

在OnNMClickList1函数中:

方法一:

m_listSetExtendedStyle(LVS_EX_CHECKBOXES);

CString str;

for(int i=0; i<m_listGetItemCount(); i++)

{

if( m_listGetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_listGetCheck(i))

{

strFormat(_T("第%d行的checkbox为选中状态"), i+1);

AfxMessageBox(str);

}

}

方法二:

POSITION pos = m_listGetFirstSelectedItemPosition();

CString str;

if (pos == NULL)

TRACE0("No items were selected!/n");

else

{

while (pos)

{

int nItem = m_listGetNextSelectedItem(pos);

strFormat(_T("选中了第%d行"), nItem+1);

AfxMessageBox(str);

}

}

5、 删除所有列(即清空)

while ( m_listDeleteColumn (0));

6、 得到单击的listctrl的行列号

// 方法一:

DWORD dwPos = GetMessagePos(); //返回表示屏幕坐标下光标位置的长整数值

CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

m_listScreenToClient(&point); //把屏幕上指定点的屏幕坐标转换成用户坐标

LVHITTESTINFO lvinfo;

lvinfopt = point;

lvinfoflags = LVHT_ABOVE;

int nItem = m_listSubItemHitTest(&lvinfo);

if(nItem != -1)

{

CString strtemp;

strtempFormat("单击的是第%d行第%d列", lvinfoiItem, lvinfoiSubItem);

AfxMessageBox(strtemp);

}

// 方法二:

NM_LISTVIEW pNMListView = (NM_LISTVIEW)pNMHDR;

if(pNMListView->iItem != -1)

{

CString strtemp;

strtempFormat("单击的是第%d行第%d列", pNMListView->iItem, pNMListView->iSubItem);

AfxMessageBox(strtemp);

}

7、 右键点击listctrl的itemd出菜单

在资源里画菜单

添加listctrl控件的NM_RCLICK消息相应函数

//右键单击的函数

void CListCtrlDlg::OnNMRclickList1(NMHDR pNMHDR, LRESULT pResult)

{

NM_LISTVIEW pNMListView = (NM_LISTVIEW)pNMHDR;

if(pNMListView->iItem != -1)

{

DWORD dwPos = GetMessagePos(); //返回表示屏幕坐标下光标位置的长整数值

CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

CMenu menu;

VERIFY( menuLoadMenu( IDR_MENU1 ) );

CMenu popup = menuGetSubMenu(0); //取得被指定菜单激活的下拉式菜单或子菜单的句柄

ASSERT( popup != NULL );

popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pointx, pointy, this ); //在指定位置显示快捷菜单,并跟踪菜单项的选择

}

pResult = 0;

}

以上就是关于怎么获取resultset一行的列数全部的内容,包括:怎么获取resultset一行的列数、cdrvba获取列数、求助:动态绑定的GridView 如何获取列数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存