用.net怎么写delphi的这一段代码?(100分)

  • 主题发起人 主题发起人 babysheep
  • 开始时间 开始时间
B

babysheep

Unregistered / Unconfirmed
GUEST, unregistred user!
function tform1.executesql(sSql:string;qry:Tquery):boolean;
begin
qry.close;
qry.SQL.Clear;
qry.SQL.Add(sSql);
try
qry.Open;
except
showmessage('something wrong');
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
executesql('select ',query1);
end;

刚学.net,乱七八糟,以上的如果不做函数我可以写出来,用sqldatareader,但是做成函数
试了很久没有成功,想请问一下各位大虾。
 
public static bool SelectPersons(string whereClause,out PersonData personData)
{
bool ret=false;
personData=new PersonData();
StringBuilder sql=new StringBuilder();
sql.Append("select ")
.Append(PersonData.OID_FIELD+",")
.Append(PersonData.NAME_FIELD+",")
.Append(PersonData.MEMO_FIELD+",")
.Append(PersonData.DEPARTMENTOID_FIELD+",")
.Append(PersonData.PASSWORD_FIELD+",")
.Append(PersonData.POWER_FIELD)
.Append(" from ")
.Append(PersonData.PERSONS_TABLE+" " )
.Append(whereClause);
try
{
IDbDataAdapter adap=Config.DB.GetAdapter(Config.CONN,sql.ToString());


//将IdbDataAdapter默认的TABLE名称"Table",影射为PersonData.PERSONS_TABLE
adap.TableMappings.Add((ITableMapping) new DataTableMapping("Table",PersonData.PERSONS_TABLE));
adap.Fill(personData);
if(personData.Tables[PersonData.PERSONS_TABLE].Rows.Count>0)
{
ret=true;
}
}
catch(Exception e)
{
//处理errro
Config.ERRORS.PushError(e.Message,Error.LEVEL_FATAL);
}
return ret;
}
 
上面是我的一段代码,(原样,我就不改了:)
这是存储层的一段代码,它的功能,从Person表中取出某些条件的记录。
其中,
1。这个静态函数在out参数中返回一个DataSet的派生类PersonData。
2。IDbDataAdapter adap=Config.DB.GetAdapter(Config.CONN,sql.ToString());
Config.CONN是个连接字符串,我用接口IDbDataAdapter,是统一了
Sql,Oledb,Odbc这三组dotnet数据访问组件。
这条语句执行完毕,adap中就已经连到了数据源,并且它的selectCommand也已赋了
sql语句的值了。已经具备填充一个DataSet(或其派生类)的能力了。
其实:
c#在这里和delphi最大的不同是。
1.数据已经不放在query中了,而是放在一个功能强大的DataSet中了(它是个与数据连接无关的本地数据集合)。
2.procedure TForm1.Button1Click(Sender: TObject);
begin
executesql('select ',query1);
end;

你的Form上肯定放了Query控件了,这是delphi的优点,似乎,也是缺点了。
Form应该,只负责和用户打交道,把用户想看的给用户,把用户的指令传给
业务逻辑。从这个角度上讲,Form不关心数据连接,也不关心要执行什么样
的Sql语句(是SqlServer样式还是Oracle样式),甚至可以没有这个Query孔件,
把数据放在一个数组集合中,就可以解决问题了。C#的DataSet其实就是个数据集合。
 
接受答案了.
 
后退
顶部