C#中如何读取SQL中表的某行某列的值

yilaozhuang 2010-02-23 03:56:11
我需要读取数据库中的值做曲线,每次读取一对坐标(x,y),这些坐标值保存在数据库的表中。我碰到的问题是:如何把这些坐标对(x,y)读出来,另外,表中的每一行不光只有(x,y),谢谢
...全文
1035 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-02-23
  • 打赏
  • 举报
回复
定义实体类,保存列值到属性List<T>
或使用DataSet,遍历
shibinysy 2010-02-23
  • 打赏
  • 举报
回复
我个人建议学习一下数据库操的常用操作.否则说半天都给你说不明白的.
操作数据库首先要连接到数据库.然后才能够从数据库中读取数据.
我给你一点点操作数据库的简单代码希望对你有帮助
代码是我工程中的一部分,不一定可以直接运行,需要你来修改的.

/// <summary>
/// 数据库操作类,继承自SqlConfig类.
/// </summary>
public class ToolsSqlDataBase:SqlConfig
{
private SqlConnection _SQLConn = new SqlConnection();

/// <summary>
/// 建立连接对象
/// </summary>
/// <returns>true 建立连接对象成功,false建立连接对象失败</returns>
public bool ConnectDataBase()
{
try
{
this.SQLConn.ConnectionString = this.GetConnectionString();
this.SQLConn.Open();
return true;
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
return false;
}


}

/// <summary>
/// 释放连接对象
/// </summary>
private void DistroySQLCon()
{
try
{
if (this.SQLConn.State != System.Data.ConnectionState.Closed)
this.SQLConn.Close();
this.SQLConn.Dispose();
//this.SQLConn = null;
}
catch
{
//this.SQLConn = null;
}
//GC.Collect();

}

/// <summary>
/// 执行sql语句,返回影响行数
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>返回影响行数,-1表示执行失败</returns>
public int ExcuteNonQuery(string sql)
{
int _ReturnNumber = -1;
try
{

if (this.SQLConn.State != System.Data.ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand cmd = new SqlCommand(sql, this.SQLConn);
_ReturnNumber = cmd.ExecuteNonQuery();

cmd.Dispose();
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnNumber ;

}

/// <summary>
/// 执行一个添加,删除,修改语句,同时支持事物
/// </summary>
/// <param name="sql">需要执行sql语句</param>
/// <param name="sqltrans">事物</param>
/// <returns>返回影响行数,-1表示执行失败</returns>
public int ExcuteNonQuery(string sql, SqlTransaction sqltrans)
{
int _ReturnNumber = -1;
try
{

if (this.SQLConn.State != System.Data.ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand cmd = new SqlCommand(sql, this.SQLConn,sqltrans);
_ReturnNumber = cmd.ExecuteNonQuery();

cmd.Dispose();
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnNumber;
}

/// <summary>
/// 执行查询返回一个纪录集
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>不论执行成功或者执行失败都将返回一个DataSet对象</returns>
public System.Data.DataSet QuerySQL(string sql)
{
DataSet _ReturnDataSet = new DataSet();

try
{
if (this.SQLConn.State != ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand _SqlCommand = new SqlCommand(sql,this.SQLConn);
SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter(_SqlCommand);
_SqlCommand.ExecuteNonQuery();
_SqlDataAdapter.Fill(_ReturnDataSet);
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnDataSet;
}

/// <summary>
/// 执行查询返回一个纪录集,带事务
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="sqlstran">事务</param>
/// <returns>不论执行成功或者执行失败都将返回一个DataSet对象</returns>
public DataSet QuerySQL(string sql, SqlTransaction sqlstran)
{
DataSet _ReturnDataSet = new DataSet();

try
{
if (this.SQLConn.State != ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand _SqlCommand = new SqlCommand(sql, this.SQLConn,sqlstran);
SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter(_SqlCommand);
_SqlCommand.ExecuteNonQuery();
_SqlDataAdapter.Fill(_ReturnDataSet);
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnDataSet;
}

/// <summary>
/// 查询一个有行的表,带事务
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="sqlstran"事务></param>
/// <returns></returns>
public DataTable QueryDataTable(string sql, SqlTransaction sqlstran)
{
DataSet ds = QuerySQL(sql, sqlstran);
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
return ds.Tables[0];

}
}
return null;
}


/// <summary>
/// 执行查询返回一个包含有行的纪录集。
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>如果查询结构没有数据则返回一个null</returns>
public System.Data.DataSet QuerySQLValid(string sql)
{
DataSet _ReturnDataSet = this.QuerySQL(sql);
if (_ReturnDataSet.Tables.Count > 0)
{
//检测某个纪录集中是否包含有数据行
for (int i = 0; i < _ReturnDataSet.Tables.Count; i++)
{
if (_ReturnDataSet.Tables[i].Rows.Count > 0)
{
return _ReturnDataSet;
}
}
}
return null;
}

/// <summary>
/// 执行查询,返回一个DataTable对象,如果遇到多个记录集则返回第一个,该方法始终都会返回一个有效的DataTable对象.但不一定都包含数据;
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>返回一个DataTable对象,如果遇到多个记录集则返回第一个,该方法始终都会返回一个有效的DataTable对象.但不一定都包含数据</returns>
public DataTable QuerySQLDataTable(string sql)
{
DataTable _ReturnDataTable = new DataTable() ;
DataSet _DataSet = this.QuerySQL(sql);
if (_DataSet.Tables.Count > 0)
{
_ReturnDataTable = _DataSet.Tables[0];
}

return _ReturnDataTable;
}

/// <summary>
/// 执行查询返回一个包含有行的纪录集。
/// </summary>
/// <param name="sql">需要查询的sql语句</param>
/// <param name="stran">事务</param>
/// <returns>返回一个DataTable对象,如果遇到多个记录集则返回第一个,该方法始终都会返回一个包含数据行的DataTable对象,否则返回null</returns>
public DataTable QuerySQLDataTable(string sql, SqlTransaction stran)
{
DataSet ds = this.QuerySQL(sql, stran);
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
return ds.Tables[0];
}
}
return null;
}

/// <summary>
/// 执行一个带参数的sql语句,如果查询记录集中包含行则返回一个DataTable对象,否则返回一个null
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="Parameter">执行的sql中的参数</param>
/// <returns>如果查询记录集中包含行则返回一个DataTable对象,否则返回一个null</returns>
public DataTable QuerySQLDataTable(string sql, SqlParameter Parameter)
{
DataSet _ReturnDataSet = QuerySQLDataSet(sql, Parameter);
if (_ReturnDataSet.Tables.Count > 0)
{
if (_ReturnDataSet.Tables[0].Rows.Count > 0)
{
return _ReturnDataSet.Tables[0];
}
}
return null;


}
qq497525725 2010-02-23
  • 打赏
  • 举报
回复
x,y在同一行的,可以先读出来那张表,然后怎么对表进行操作才能获得所要的值呢?
table.Rows[i][j].ToString() 这个真的可以吗?

这是 .NET 里么的DataTable 和数据库没有关系。
jin20000 2010-02-23
  • 打赏
  • 举报
回复
引用 5 楼 yumichika 的回复:
这个和SQL版本无关
只要是SQL的数据库都可以用
实现方法是用C#的DATA类方法 参数用SQL语句
一般是"select X,Y from TABLENAME" X,Y是你存XY的列名 TABLENAME是表名 然后会存入一个DATASET中
再对DATASET进行操作了就行了

up ..
Yumichika 2010-02-23
  • 打赏
  • 举报
回复
这个和SQL版本无关
只要是SQL的数据库都可以用
实现方法是用C#的DATA类方法 参数用SQL语句
一般是"select X,Y from TABLENAME" X,Y是你存XY的列名 TABLENAME是表名 然后会存入一个DATASET中
再对DATASET进行操作了就行了
yilaozhuang 2010-02-23
  • 打赏
  • 举报
回复
x,y在同一行的,可以先读出来那张表,然后怎么对表进行操作才能获得所要的值呢?
table.Rows[i][j].ToString() 这个真的可以吗?SQL2000不知道可以不
APP开发王 2010-02-23
  • 打赏
  • 举报
回复
table.Rows[i][j].ToString()
循环
OK
zhujiazhi 2010-02-23
  • 打赏
  • 举报
回复
先把那张表读出来的,然后再进行操作的
select x,y from table
Yumichika 2010-02-23
  • 打赏
  • 举报
回复
XY是同一行不同列吗?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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