-
我认为理想的优雅解决方案是:
1. 不要在 getdatareader 方法中写 open(); 使用 close(); 把 open() 拿出来写出来。 里面。
2. 在while()之后写close();
3、 open();使用 close(); 尽量不要用某种方法写,这样写作的灵活性就差了,**容易出现你说的问题。
4. 我的理论是 open() 仅在您想访问 db 时才出现; close() 在您访问后立即进行;
例如:open(); 打开。
drd = getdatareader(xx,xx);
while (
close();关闭。
-
DataReader 存储什么? 这是一个查询结果,想想看,如果不合并查询对象,你能凭空更新查询结果吗? DataReader 对象不是新的,而是在查询时由 ExecuteReader 方法生成的,这就是它不定义构造函数的原因。
-
string id=reader["id"].tostring();
或者对象 obj=reader[.]"id"];
如果您知道 id 列的具体列(例如第 5 列),您还可以使用下标字符串 id=reader[5]。tostring();
或对象 obj=reader[5];
-
dbhelp 应该是在项目中编写的类,它有一个名为 olereader 的方法,它要求您输入一个 SQL 字符串并返回您读取的 DataReader。
-
我不知道 studentno 字段是 int 还是字符串?!
至少未指定一个参数”。
也就是说,存在未指定的参数。
具体错误可以通过调试知道。
以下是对**写作习惯的建议:
string sql = "select * from student where studentno = '' ",如果 studentno 是数字,则无需加引号''
最好在此处使用参数化,但不需要单个参数:
第二个是:如何编写数据读取器。
while(
reader["studentno"].tostring();
希望对你有所帮助!