C#sql选择表中某一整数字段大于某一值的所有记录

程序为:
string SqlCommand = "select * from [position] where 项目编号='" + num_project.ToString() + "'and 监测点>'" + num_monitoring.ToString() + "'";
SqlDataAdapter thisAdapter = new SqlDataAdapter(SqlCommand, conn);
//--------------------新建数据集合---------------------------------------
//清空数据集合
thisDataSet.Clear();
thisAdapter.Fill(thisDataSet, "position");
int count = thisDataSet.Tables["position"].Rows.Count;
for (int i = 0; i < count; i++)
{
string NUM=thisDataSet.Tables["position"].Rows[i]["监测点"].ToString();
SqlCommand = "update [position] set 监测点='" + Convert.ToString(Convert.ToInt16(NUM) - 1) + "'where项目编号='" + num_project.ToString() + "'and 监测点='" + NUM + "'";
SqlCommand recmd = new SqlCommand(SqlCommand, conn);
recmd.ExecuteNonQuery();
}
其中num_monitoring为一序号,目的是找出SQL数据库中【position】表中大于num_monitoring的所有记录,并将相应的序号比原来小1,背景:删除某一条记录后,将剩余的序号还是按照从1开始以1为单位递增排列。

1、数据库中的项目编号和监测点是什么类型的数据?如果是 int,则无需进行 string 转换,参数传递也无需加单引号(')。

2、使用存储过程,如果直接编写查询语句建议使用 StringBuilder 或者 string.Format

3、没必要循环更新数据,完全可以批量更新。

4、数据架构很重要,数据库、表、字段尽量不要用中文

5、.NET Framework 4.0 可以使用 System.Data.Linq.DataContext 进行数据管理


注意:千万别用下面的代码直接执行

var num_project = 1;
var num_monitoring = 1;

var query = "";

var sb = new StringBuilder();
sb.AppendLine("SELECT * FROM [Position]");
sb.AppendLine("WHERE 项目编号 = {0} AND 监测点 > {1}");

query = string.Format(sb.ToString(), num_project, num_monitoring);
Console.WriteLine(query);

sb.Clear();

sb.AppendLine("UPDATE [Position]");
sb.AppendLine("SET 监测点 = 监测点 - 1");
sb.AppendLine("WHERE 项目编号 = {0} AND 监测点 > {1}");

query = string.Format(sb.ToString(), num_project, num_monitoring);
Console.WriteLine(query);

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-04
你这个代码这样搞可能会出问题。
1.你这个要跟新的字段,是不是主键,如果是主键,我想应该不能更新的。因为你用dataset更新数据库时,肯定是更新主键找数据更新。

C#sql选择表中某一整数字段大于某一值的所有记录
4、数据架构很重要,数据库、表、字段尽量不要用中文 5、.NET Framework 4.0 可以使用 System.Data.Linq.DataContext 进行数据管理 注意:千万别用下面的代码直接执行 var num_project = 1;var num_monitoring = 1;var query = "";var sb = new StringBuilder();sb.AppendLine("SELECT * FROM ...

C#怎么比较数据库表中某行某列的值与一个int值的大小?
你的数据库里的字段是什么类型的,varchar还是整型?如果是varchar,并且数据库是sql server或oracle的话,可以在查询时直接利用cast函数转换为整型cast(列名 as int),如果是整型直接取出来就行,不明白欢迎继续追问

如何使用c#获得某一列下的所有记录
比如 select TOP 20 [字段名] from 表格 这样获取的就是最新的20条数据,在[表格]的[字段]中 希望这样能帮到你

c#查询数据库中某一字段的值是否小于需求量怎么编写
sqladpater da=new sqladpter();da.selectcommend=myCommand ;da.fill(dt);for(int i=0;i0){ \/\/...} }

C# 如何得到数据库一个表的某一列的所有数据?
例如数据表a有id,names,pwd三列,那么写:var query = from aa in db.a select new {a.id,a.names,a.pwd };\/\/显示两列极其以上,需要使用{}把字段名称括起来,表示一个匿名方法 只显示一列:var query = from aa in db.a select new a.id 这样就行了~~...

SQL 得到表的 某行某列的值(如 表的第三行第一列的值)
要查询第一列比较麻烦,如果知道第一列的列名就容易一些。假设第一列的列名是col,并且表有主键id,那么查询第三行的第一列的值可以这么写:select top 1 col from tablename where id not in (select top 2 id from tablename)

c#删除数据库中的一条记录的问题
是你的sql语句错了...delete 语句不是那么写的...给你举个例子:下面的示例从 ProductCostHistory 表中删除 StandardCost 列的值大于 1000.00 的所有行。DELETE FROM Production.ProductCostHistory WHERE StandardCost > 1000.00;多看联机帮助..干掉* 是不可以的 会提示你的对象名无效 ...

SQL 如何 显示某一列的内容 ? 工具是C#
数据库操作语句:"select top 1 num from tab1 where name ="+strA+" order by num desc"tab1为你的表名,strA为你要查询的值,如N1 数据库的查询连接,你会吧,对不?

c# 读取数据库表中某一个字段的多条值
方法声明那里结尾多打了一个;号 方法中变量声明不能加 public private 谢谢限定符 变量使用要声明它的类型 比如 sql 没有声明就直接使用了 tels你声明他是List<string> 但是却把一个string 类型的值赋值给它……方法声明的返回值是string 但你却返回了一个List<string> ...帮你改了个可...

C#中怎么样从SQL 2008中实现按下某个按钮读取上一条或下一条记录
假设当前id为 n 则 :上一条: select top 1 * from tb where id<n 下一条: select top 1 * from tb where id>n

相似回答