如何将数据库查询结果放入变量中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数据库查询结果放入变量中相关的知识,希望对你有一定的参考价值。
如:select COUNT(*) from PHOTO_PHOTOS group by albumid;
我用的是SQLSERVER2005数据库,我想把这个结果放入一个变量中可以吗?
1、建立连接:OleDbConnection或者SqlConnection
2、建立SQL命令:OleDbCommand或者SqlCommand
3、执行命令。
执行命令的方法有很多:
a、ExecuteScalar();//返回的是结果的第一行第一列,
b、使用DataTable,返回一个表,
c、Reader()//向前只读
返回的结果使用类型转换赋值给你的变量。
下面是一个例子,连接的Access数据库,要改成SQL Server只需要改连接常量就行了。
namespace AccessControl
public class AccessControl
/// <summary>
/// 连接常量
/// </summary>
private OleDbConnection Con;
/// <summary>
/// SQL命令
/// </summary>
private OleDbCommand Com;
/// <summary>
/// 初始化一个连接实例
/// </summary>
/// <param name="FilePath">文件名</param>
public AccessControl(string FilePath)
Con = new OleDbConnection(@"Provider =Microsoft.Jet.OLEDB.4.0;Data Source =" + @FilePath);
Com = new OleDbCommand();
/// <summary>
/// 返回执行所受影响的函数
/// </summary>
/// <param name="com"></param>
/// <returns></returns>
public int ExecuteGetLines(string com)
try
Com.CommandText = com;
Com.Connection = Con;
Con.Open();
int i = 0;
i = Com.ExecuteNonQuery();
return i;
catch(Exception e)
throw new System.ArgumentException("错误",e.Message);
return 0;
finally
CloseCon();
/// <summary>
/// 返回结果的第一行第一列
/// </summary>
/// <param name="com"></param>
/// <returns></returns>
public object ExecuteGetCol(string com)
try
Com.CommandText = com;
Com.Connection = Con;
Con.Open();
object o = null;
o = (object)Com.ExecuteScalar();
return o;
catch (Exception e)
throw new System.ArgumentException("错误", e.Message);
finally
CloseCon();
/// <summary>
/// 返回一个数据集合DataTable
/// </summary>
/// <param name="com"></param>
/// <returns></returns>
public DataTable ExecuteGetTable(string com)
try
DataTable dt = new DataTable();
Com.CommandText = com;
Com.Connection = Con;
OleDbDataAdapter dad = new OleDbDataAdapter(Com);
dad.Fill(dt);
return dt;
catch(Exception e)
throw new System.ArgumentException("错误", e.Message);
finally
CloseCon();
/// <summary>
/// 关闭连接
/// </summary>
public void CloseCon()
Com.Dispose();
Con.Close();
参考技术A 昏.这样情况下不要用ExecuteReader(),那样多麻烦.而且推荐用 SqlClient.
SqlConnection conn = new SqlConnection("//数据库连接字符串信息//");
SqlCommand cmd = new SqlCommand("select COUNT(*) from PHOTO_PHOTOS group by albumid", conn);
conn.Open();
int totalCount = (int)cmd.ExecuteScalar(); //totalcount 就是总数
conn.Close(); 参考技术B 我举个简单的例子:
int count=0;
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "select COUNT(*) from PHOTO_PHOTOS group by albumid; ";
try
OleDbDataReader reader = cmd.ExecuteReader();
while(reader.Read())
count=reader.GetInt32(0);//获取统计数
reader.close();//关闭记录集
catch(Exception e)
//异常信息
基本思路就这样 参考技术C private int CalculateRecord()
try
int recordCount;
SqlConnection oc = new SqlConnection(connectionstring);
oc.Open();
string OleDb = "select count(*) as [count] from News where TypeName='文教视点'";
SqlCommand cmd = new SqlCommand(OleDb, oc);
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
recordCount = Int32.Parse(sdr["count"].ToString());
else
recordCount = 0;
sdr.Close();
oc.Close();
return recordCount;
catch (Exception ex)
throw new Exception(ex.Message);
本回答被提问者采纳 参考技术D ExecuteScalar().ToString()
用变量接受就可以
如何将 MySQL 查询结果放入 ArrayList<object>
【中文标题】如何将 MySQL 查询结果放入 ArrayList<object>【英文标题】:How to get the MySQL query results into a ArrayList<object> 【发布时间】:2016-05-05 17:07:21 【问题描述】:我有导致多列的 SQL 查询。我想执行这个查询并将结果放入我的ArrayList<>
而不是ResultSet
。
我的列定义类是
public class Record
private String FileName;
private String FileID;
private String Loan;
private String Page;
查询是:
String query = "SELECT FileName, FileID, loanNumnber, PageNumber FROM table";
ResultSet rs = stmt.executeQuery(query);
我想要 recordData 对象中的查询结果。
ArrayList<Record> recordData = new ArrayList<Record>;
请建议如何使用正确的映射直接填充数组列表。
【问题讨论】:
使用像 Hibernate、JDO 等 OR 映射器或自己做。 【参考方案1】:如果您想自己实现,请使用以下代码 sn-p。它将结果集转换为Record
对象并将其添加到ArrayList
。
Record record;
while(rs.next())
record = new record();
String fileName = rs.getString("FileName");
String fileID = rs.getString("FileID");
String loanNumnber = rs.getString("loanNumnber");
String pageNumber = rs.getString("PageNumber");
record.setFileName(fileName);
record.setFileID(fileID);
record.setLoan(loanNumnber);
record.setPage(pageNumber);
recordData.add(record)
rs.close();
否则,如果您想使用任何第三方框架,那么有很多选项,例如 Hibernate、iBatis 等。
【讨论】:
【参考方案2】:你可以使用mybatis。 请使用 ORM。
https://en.wikipedia.org/wiki/Object-relational_mapping
【讨论】:
【参考方案3】:你应该使用像 Hibernate 这样的 OR 映射器。感谢 POJO 课程,您可以随心所欲。 一些读数:
http://www.tutorialspoint.com/hibernate/hibernate_examples.htm
http://www.mkyong.com/tutorials/hibernate-tutorials/
【讨论】:
【参考方案4】:将括号“()”添加到代码中的这一行,使其如下所示:
ArrayList<Record> recordData = new ArrayList<Record>();
【讨论】:
以上是关于如何将数据库查询结果放入变量中的主要内容,如果未能解决你的问题,请参考以下文章