在做一个类的时候不解的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 19:01:57
这是我一个数据类里面的一段代码
private static string id;
private string sql = "SELECT * FROM Books WHERE Id"+id;
public List<Books> Multiple(string i)
{
id=i;
ds = s.Select(sql);

.......省略......

return list;
}
本意大致就是,我在这个Multiple类之前,先定义了一个string sql以存储将运行到数据库表的sql语句
而这条sql语句有一个动态的值Id,我先在sql语句前面做了一个静态string id
然后当逻辑层,调用到其中一个类,比如Multiple,必需传入一个i参数,然后设置id=i
但是我调试后,发现sql语句是"SELECT * FROM Books WHERE Id"而已,传来的参数并没有接在语句后面,也就是说那个静态string id为null
如何才能做到当逻辑层传一个值过来的时候,这个值自动添加到sql语句后面
因为这个sql语句是很多个类公用的,所以我不想在每个类里面都重复写这条sql…………
问题大致就是这样,麻烦解答,谢谢
呃,纳闷,错误不在于那条SQL语句,上面这条SQL是我写贴时随便写出来的而已
真正我项目里面的那条因为太长了,所以没写出来,因此问题不在SQL语句上

1.那个=号的问题估计是楼主写到这里时的失误,不是源程序里的,否则源程序早报错了。
2.sql语句在累实例化的时候初始化了,运算后的结果是"SELECT * FROM Books WHERE Id" 。在后来的方法中并未再次运算过,所以sql结果不变。
3.我想了想,取值时自动进行运算的,只能是"属性了"。楼主的需求里,能不能将sql改成属性呢:
private string SQL
{
set{this.sql=value}
get{return this.value+id}
}
4.如果诚如楼主所说要改很多地方,那只好看看你的Multiple方法了。如果这个方法好该的话,就在id后加上一句"sql+=id"或"sql=sql+id"。当然,这个方法有点委曲求全的感觉。

呵呵,我也是个初学者,刷分来了。有错误的地方,别笑话我啊。

因为你的sql变量拼接错误,应该是这样写才对:
public static string sql =
"SELECT * FROM BOOKS WHERE ID =" + id;

否则你在层与层的传递变量,嘿嘿,无法执行啊。

SELECT * FROM Books WHERE Id="+id;写错了,少了=号