求解ExecuteQuery的使用方法

晓风well 2012-02-09 03:15:35
    public DataSet ExecuteQuery(string sql, string tname)
{
string mystr;
mystr = ConfigurationManager.AppSettings["myconnstring"];
SqlConnection myconn = new SqlConnection();
myconn.ConnectionString = mystr;
myconn.Open();
SqlDataAdapter myda = new SqlDataAdapter(sql, myconn);
DataSet myds = new DataSet();
myda.Fill(myds, tname);
myconn.Close();
return myds;
}


EexcuteQuery()函数编写路上,那么我如何才能调用并执行SELECT操作呢?
比如说我要查询一个course表中的课程总数。
...全文
2474 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq623932737 2012-02-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tao_sun 的回复:]
[Quote=引用 1 楼 naonaoye 的回复:]

没看懂问什么

C# code
string mysql;
string mycmd;
mycmd = "SELECT tname FROM teacher WHERE tno='" + DropDownList2.SelectedValue + "'";
m……
[/Quote]+1
w是浪荡儿 2012-02-10
  • 打赏
  • 举报
回复
明明有参数 传个 sql和数据库表名 过去不就完了嘛
chenlin19891008 2012-02-10
  • 打赏
  • 举报
回复
这个一般够用了
用的都是List<T>,但是你要用DataTable的话就不行~再加一个方法
chenlin19891008 2012-02-10
  • 打赏
  • 举报
回复
给你一个经典的DBHelper

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.SqlClient;

using System.Data;

using System.Reflection;

using System.Configuration;

namespace Web.SqlServerDAL

{

public class SqlHelper

{

#region 变量

/// <summary>

/// 数据库连接对象

/// </summary>

private static SqlConnection _con = null;

public static string constr = "数据库连接地址";

#endregion

#region 属性

/// <summary>

/// 获取或设置数据库连接对象

/// </summary>

public static SqlConnection Con

{

get

{

if (SqlHelper._con == null)

{

SqlHelper._con = new SqlConnection();

}

if (SqlHelper._con.ConnectionString == "")

{

SqlHelper._con.ConnectionString = SqlHelper.constr;

}

return SqlHelper._con;

}

set

{

SqlHelper._con = value;

}

}

#endregion

#region 方法

#region 执行返回一行一列的数据库操作

/// <summary>

/// 执行返回一行一列的数据库操作

/// </summary>

/// <param name="commandText">SQL语句或存储过程名</param>

/// <param name="commandType">SQL命令类型</param>

/// <param name="param">SQL命令参数数组</param>

/// <returns>第一行第一列的记录</returns>

public static int ExecuteScalar(string commandText, CommandType commandType, params SqlParameter[] param)

{

int count = 0;

using (SqlHelper.Con)

{

using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))

{

try

{

cmd.CommandType = commandType;

cmd.Parameters.AddRange(param);

SqlHelper.Con.Open();

count = Convert.ToInt32(cmd.ExecuteScalar());

}

catch (Exception ex)

{

throw ex;

}

}

}

return count;

}

#endregion

#region 执行不查询的数据库操作

/// <summary>

/// 执行不查询的数据库操作

/// </summary>

/// <param name="commandText">SQL语句或存储过程名</param>

/// <param name="commandType">SQL命令类型</param>

/// <param name="param">SQL命令参数数组</param>

/// <returns>受影响的行数</returns>

public static int ExecuteNonQuery(string commandText, CommandType commandType, params SqlParameter[] param)

{

int result = 0;

using (SqlHelper.Con)

{

using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))

{

try

{

cmd.CommandType = commandType;

cmd.Parameters.AddRange(param);

SqlHelper.Con.Open();

result = cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

throw ex;

}

}

}

return result;

}

#endregion

#region 执行返回一条记录的泛型对象

/// <summary>

/// 执行返回一条记录的泛型对象

/// </summary>

/// <typeparam name="T">泛型类型</typeparam>

/// <param name="reader">只进只读对象</param>

/// <returns>泛型对象</returns>

private static T ExecuteDataReader<T>(IDataReader reader)

{

T obj = default(T);

try

{

Type type = typeof(T);

obj = (T)Activator.CreateInstance(type);//从当前程序集里面通过反射的方式创建指定类型的对象

//obj = (T)Assembly.Load(SqlHelper._assemblyName).CreateInstance(SqlHelper._assemblyName + "." + type.Name);//从另一个程序集里面通过反射的方式创建指定类型的对象

PropertyInfo[] propertyInfos = type.GetProperties();//获取指定类型里面的所有属性

foreach (PropertyInfo propertyInfo in propertyInfos)

{

for (int i = 0; i < reader.FieldCount; i++)

{

string fieldName = reader.GetName(i);

if (fieldName.ToLower() == propertyInfo.Name.ToLower())

{

object val = reader[propertyInfo.Name];//读取表中某一条记录里面的某一列信息

if (val != null && val != DBNull.Value)

propertyInfo.SetValue(obj, val, null);//给对象的某一个属性赋值

break;

}

}

}

}

catch (Exception ex)

{

throw ex;

}

return obj;

}

#endregion

#region 执行返回一条记录的泛型对象

/// <summary>

/// 执行返回一条记录的泛型对象

/// </summary>

/// <typeparam name="T">泛型类型</typeparam>

/// <param name="commandText">SQL语句或存储过程名</param>

/// <param name="commandType">SQL命令类型</param>

/// <param name="param">SQL命令参数数组</param>

/// <returns>实体对象</returns>

public static T ExecuteEntity<T>(string commandText, CommandType commandType, params SqlParameter[] param)

{

T obj = default(T);

using (SqlHelper.Con)

{

using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))

{

cmd.CommandType = commandType;

cmd.Parameters.AddRange(param);

SqlHelper.Con.Open();

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (reader.Read())

{

obj = SqlHelper.ExecuteDataReader<T>(reader);

}

}

}

return obj;

}

#endregion

#region 执行返回多条记录的泛型集合对象

/// <summary>

/// 执行返回多条记录的泛型集合对象

/// </summary>

/// <typeparam name="T">泛型类型</typeparam>

/// <param name="commandText">SQL语句或存储过程名</param>

/// <param name="commandType">SQL命令类型</param>

/// <param name="param">SQL命令参数数组</param>

/// <returns>泛型集合对象</returns>

public static List<T> ExecuteList<T>(string commandText, CommandType commandType, params SqlParameter[] param)

{

List<T> list = new List<T>();

using (SqlHelper.Con)

{

using (SqlCommand cmd = new SqlCommand(commandText, SqlHelper.Con))

{

try

{

cmd.CommandType = commandType;

cmd.Parameters.AddRange(param);

SqlHelper.Con.Open();

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (reader.Read())

{



T obj = SqlHelper.ExecuteDataReader<T>(reader);

list.Add(obj);

}

}

catch (Exception ex)

{

throw ex;

}

}

}

return list;

}

#endregion

#endregion

}

}
JoesenZhao 2012-02-10
  • 打赏
  • 举报
回复
已经有SQL 参数了,传个SQL语句不就实现了?
Specialaspnet 2012-02-09
  • 打赏
  • 举报
回复
直接写好sql语句 然后利用这个来返回一个DateSet啊
晓风well 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wzs_xyz 的回复:]

首先需要确定你这个函数的位置,实在当前类还是在其他类,
如果在同一个类里面,直接调用
DataSet ds= ExecuteQuery(sql,"");
如果在另一个类,那需要先实例化一个该类的对象,再用调用方法的方式调用函数
DataSet ds= 对象名.ExecuteQuery(sql,"");
你那样直接从一个文本对象去调用这个方法哪里行
[/Quote]

额,我的言下之意是我已经实例过了~~

ExecuteQuery(sql,"");其中第二个参数是干嘛用的?
未知数 2012-02-09
  • 打赏
  • 举报
回复
首先需要确定你这个函数的位置,实在当前类还是在其他类,
如果在同一个类里面,直接调用
DataSet ds= ExecuteQuery(sql,"");
如果在另一个类,那需要先实例化一个该类的对象,再用调用方法的方式调用函数
DataSet ds= 对象名.ExecuteQuery(sql,"");
你那样直接从一个文本对象去调用这个方法哪里行
Raincen 2012-02-09
  • 打赏
  • 举报
回复
实例化ExecuteQuery()所在的类,然后通过实例调用,假设该方法在X类下:

X x= new X();
x.ExecuteQuery(...);
晓风well 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 naonaoye 的回复:]

没看懂问什么
        string mysql;
string mycmd;
mycmd = "SELECT tname FROM teacher WHERE tno='" + DropDownList2.SelectedValue + "'";
mydb.ExecuteQuery(mycmd,"teacher");
mysql = "UPDATE course SET tno='" + DropDownList1.SelectedValue + "',tname='" + mycmd +
"'WHERE cno='" + DropDownList1.SelectedValue + "'";
mydb.ExecuteNonQuery(mysql);
Response.Write("<script language=javascript> alert('添加成功!')</script>");


我想知道的是我在这里调用ExecuteQuery()具体该如何操作。


----------------------------------签----------名----------栏----------------------------------上班,周末,上班,周末
[/Quote]
Ny-6000 2012-02-09
  • 打赏
  • 举报
回复
你写的,已经可以了.
naonaoye 2012-02-09
  • 打赏
  • 举报
回复
没看懂问什么





----------------------------------签----------名----------栏----------------------------------
上班,周末,上班,周末

62,248

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧