如何将数据库查询结果放入变量中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数据库查询结果放入变量中相关的知识,希望对你有一定的参考价值。

如:select COUNT(*) from PHOTO_PHOTOS group by albumid;
我用的是SQLSERVER2005数据库,我想把这个结果放入一个变量中可以吗?

在C#程序里面,使用SQL语句的一般方法是:
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&lt;&gt; 而不是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&lt;Record&gt; recordData = new ArrayList&lt;Record&gt;();

【讨论】:

以上是关于如何将数据库查询结果放入变量中的主要内容,如果未能解决你的问题,请参考以下文章

sql中查询出一条数据如何将数据存在一个变量中

如何将 SQL 结果放入 VBA 中的变量中

如何将 JComboBox 事件处理程序的字符串放入变量中进行查询?

c#如何将查询后的结果放入list中

如何将执行查询的结果放入 ViewData 并传递给视图

Python 中的 Bigquery:如何将查询结果放入表中?