自己写的MySql 操作类,怎么带Where操作就没结果集呢????困扰啊!
miyoo 2008-07-16 04:57:08 using System;
using System.Data;
using System.Configuration;
using System.Windows.Forms;
using System.Collections;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace testTreeview
{
/// <summary>
/// MySql数据库基本操作类
/// 2008-7-8
/// </summary>
class CMySql
{
//定义该类共用变量
private MySqlConnection conn; //
private MySqlCommand mycm; //
private DataSet myds; //
private MySqlDataAdapter myda; //
/**/
/// <summary>
/// 从app.config中读取数据库连接字符串
/// </summary>
private string CONNSTR = System.Configuration.ConfigurationManager.ConnectionStrings["TgNetVideo.Properties.Settings.shidevideoConnectionString"].ToString();
public CMySql()
{
//构造函数,创建对象实例
conn = new MySqlConnection(CONNSTR);
mycm = conn.CreateCommand();
myds = new DataSet();
myda = new MySqlDataAdapter();
}
/// <summary>
/// 一般数据库查询方法
/// </summary>
/// <param name="sql">查询字符串</param>
/// <returns>DataTable</returns>
public DataTable SelectDt(string sql)
{
conn.Open();
try
{
mycm.CommandText = sql;
mycm.CommandType = CommandType.Text;
myda.SelectCommand = mycm;
myda.Fill(myds);
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
conn.Close();
}
return myds.Tables[0];
//返回DataSet属性适用面更广 myDataSet.Tables[index].Rows[n]
}
public DataSet SelectDs(string sql)
{
conn.Open();
try
{
mycm.CommandText = sql;
mycm.CommandType = CommandType.Text;
myda.SelectCommand = mycm;
myda.Fill(myds);
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
conn.Close();
}
return myds;
}
public void command(string sql)
{
conn.Open();
try
{
mycm.CommandText = sql;
mycm.CommandType = CommandType.Text;
mycm.ExecuteNonQuery();
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
conn.Close();
}
}
/// <summary>
/// 删除方法
/// </summary>
/// <param name="sql"></param>
public void DeleteInset(string sql)
{
conn.Open();
try
{
mycm.CommandText = sql;
mycm.CommandType = CommandType.Text;
mycm.ExecuteNonQuery();
}
finally
{
conn.Close();
}
}
/**/
/// <summary>
/// 通过存储过程返回查询表的信息
/// </summary>
/// <param name="sprocName">存储过程名称</param>
/// <returns>DataTable</returns>
protected DataTable GetTable(string sprocName)
{
conn.Open();
try
{
mycm.CommandText = sprocName;
mycm.CommandType = CommandType.StoredProcedure;
myda.SelectCommand = mycm;
myda.Fill(myds);
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
conn.Close();
}
return myds.Tables[0];
}
/**/
/// <summary>
/// 通过存储过程和参数返回查询表的信息
/// </summary>
/// <param name="sprocName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
protected DataTable GetTable(string sprocName, MySqlParameter[] parameters)
{
conn.Open();
try
{
mycm.CommandText = sprocName;
mycm.CommandType = CommandType.StoredProcedure;
MySqlParameterCollection sqlParams = mycm.Parameters;
//先清空原有的参数
mycm.Parameters.Clear();
//给Command添加参数
foreach (MySqlParameter parameter in parameters)
{
mycm.Parameters.Add(parameter);
}
myda.SelectCommand = mycm;
myda.Fill(myds);
}
finally
{
//无论语句执行正确与否,都关闭连接释放资源
conn.Close();
}
return myds.Tables[0];
}
/**/
/// <summary>
/// 通过存储过程及存储过程参数执行对数据库无返回值的操作(如:新增,更新,删除等)
/// </summary>
/// <param name="sprocName">存储过程名称</param>
/// <param name="parameters">存储过程参数</param>
protected void SaveTale(string sprocName, MySqlParameter[] parameters)
{
mycm.CommandText = sprocName;
mycm.CommandType = CommandType.StoredProcedure;
MySqlParameterCollection sqlParams = mycm.Parameters;
//先清空原有的参数
mycm.Parameters.Clear();
//给Command添加参数
foreach (MySqlParameter parameter in parameters)
{
mycm.Parameters.Add(parameter);
}
//打开连接
conn.Open();
try
{
//执行
mycm.ExecuteNonQuery();
}
finally
{
//关闭连接
conn.Close();
}
}
}
}
问题:带where约束就没返回结果集;
string sql = "select sysname from sysconfig ";
CMySql mydb = new CMySql();
DataTable dt = new DataTable();
dt = mydb.SelectDt(sql);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
string mss = String.Format("{0}", row[column]);
rootNode = treeVideo1.AddRoot(mss, null);
string sql2 = "select servername from serverconfig where sysname='" + mss + "'";
CMySql db2 = new CMySql();
DataTable dt2 = new DataTable();
dt2 = db2.SelectDt(sql2);
foreach (DataRow row2 in dt2.Rows)
{
foreach (DataColumn column2 in dt2.Columns)
{
string mss2 = String.Format("{0}", row2[column2]);
groupNode = treeVideo1.AddGroup(mss2, rootNode);
}
}
}
}
而测试不带where的语句就有结果集:
string sql2 = "select servername from serverconfig";
CMySql db2 = new CMySql();
DataSet ds2 = db2.SelectDs(sql2);
foreach (DataTable tb in ds2.Tables)
{
foreach (DataRow row2 in tb.Rows)
{
foreach (DataColumn column2 in tb.Columns)
{
string mss2 = String.Format("{0}", row2[column2]);
//groupNode = treeVideo1.AddGroup(mss2, rootNode);
MessageBox.Show(mss2);
}
}
}
望有人解答啊!!应该是数据库封装类有问题!