百分求助,替朋友发贴求助

sljz 2003-10-16 03:58:45
我用的是VB.NET,对C#了解不多,朋友问我个问题,希望大家给予解答,谢谢。

----------------------------
敲了个类,请求高手指教
今天图书馆休息....所以有空敲了个类
类的主要功能是想实现SQL语句生成并执行
如果是SELECT语句的话,就返回ICollection的查询结果
如果是INSERT,UPDATE,DELETE语句就直接执行,如果执行失败,则返回FALSE,真就返回TRUE
里面还有很大量的代码重复,请求高手指教如何把这些代码都转化为代码复用

代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace Vote
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class DataControls
{
string[] strColumn,strValues,strWhere,strGroupBy,strHaving,strOrderBy;
int iCommand;
string strTable;
SqlConnection Conn;

public DataControls(string[] Column,//字段名
int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string Table,//表名
string[] GroupBy,//分组条件
string[] Having,//Having Search Criteria
string[] OrderBy,//排序条件
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
strColumn=Column;
iCommand=Command;
strTable=Table;
strGroupBy=GroupBy;
strHaving=Having;
strOrderBy=OrderBy;
Conn=objConn;
}

public DataControls(int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string[] Column,//字段名
string Table,//表名
string[] Where,//Where Search Criteria
string[] GroupBy,//分组条件
string[] OrderBy,//排序条件
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
strColumn=Column;
iCommand=Command;
strTable=Table;
strWhere=Where;
strGroupBy=GroupBy;
strOrderBy=OrderBy;
Conn=objConn;
}

public DataControls(string[] Column,//字段名
string[] Values,//对应字段信息
int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string Table,//表名
string[] Where,//Where Search Criteria
string[] OrderBy,//排序条件
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
strColumn=Column;
strValues=Values;
iCommand=Command;
strTable=Table;
strWhere=Where;
strOrderBy=OrderBy;
Conn=objConn;
}

public DataControls(string[] Column,//字段名
string[] Values,//对应字段信息
int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string Table,//表名
string[] Where,//Where Search Criteria
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
strColumn=Column;
strValues=Values;
iCommand=Command;
strTable=Table;
strWhere=Where;
Conn=objConn;
}

public DataControls(string[] Column,//字段名
int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string Table,//表名
string[] Where,//Where Search Criteria
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
strColumn=Column;
iCommand=Command;
strTable=Table;
strWhere=Where;
Conn=objConn;
}

public DataControls(string[] Column,//字段名
string[] Values,//相应的值
int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string Table,//表名
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
strColumn=Column;
iCommand=Command;
strTable=Table;
strValues=Values;
Conn=objConn;
}
...全文
27 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohezhiliu 2003-10-19
  • 打赏
  • 举报
回复
up
Luckyboys 2003-10-19
  • 打赏
  • 举报
回复
谢谢....
我是使用.NETFRAME WORK V1.1的~``
elite2018 2003-10-18
  • 打赏
  • 举报
回复
U can use Interface and abstract Class to implement reuse codes ,
o1o 2003-10-18
  • 打赏
  • 举报
回复
直接拷贝下来粘贴后还有些错误,我用的还是1.0版,估计需要些时间。
希望得到更多的相关信息。
rgbcn 2003-10-18
  • 打赏
  • 举报
回复
看这边看得很累
Luckyboys 2003-10-18
  • 打赏
  • 举报
回复
难道这个类真的写的这么垃圾吗???
Luckyboys 2003-10-18
  • 打赏
  • 举报
回复
MA......沉到海底了...
Luckyboys 2003-10-17
  • 打赏
  • 举报
回复
5555555555555~~~~`
无人看啊````
sljz 2003-10-16
  • 打赏
  • 举报
回复
case 3:
{

strCommand="DELETE FROM Table WHERE Search Criteria";
strCommand=strCommand.Replace("Table",strTable);

int iIndex=strCommand.IndexOf("Search Criteria");
strCommand=strCommand.Remove(iIndex,15);
int iPlace=1;
foreach(string strWhe in strWhere)
{
strCommand=strCommand.Insert(iIndex,strWhe);
iIndex+=strWhe.Length;
if(strWhere.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex," AND ");
iIndex+=5;
}
iPlace++;
}
return strCommand;
}
}
return null;
}
public ICollection SelectCommand()
{
try
{
DataTable dt=new DataTable();
DataView dv;
string strCommand=BuildCommand();
if(iCommand==0)
{
SqlDataAdapter objDA=new SqlDataAdapter(strCommand,Conn);
objDA.Fill(dt);
dv=new DataView(dt);
}
else
{
return null;
}

return dv;
}
catch
{
return null;
}
}

public bool InsertCommand()
{
if(iCommand==1)
{
try
{
SqlCommand objCmd=new SqlCommand(BuildCommand(),Conn);
objCmd.Connection.Open();
objCmd.ExecuteNonQuery();
objCmd.Connection.Close();
}
catch
{
return false;
}
return true;
}
return false;
}

public bool UpdateCommand()
{
if(iCommand==2)
{
try
{
SqlCommand objCmd=new SqlCommand(BuildCommand(),Conn);
objCmd.Connection.Open();
objCmd.ExecuteNonQuery();
objCmd.Connection.Close();
}
catch
{
return false;
}
return true;
}
return false;
}

public bool DeleteCommand()
{
if(iCommand==3)
{
try
{
SqlCommand objCmd=new SqlCommand(BuildCommand(),Conn);
objCmd.Connection.Open();
objCmd.ExecuteNonQuery();
objCmd.Connection.Close();
}
catch
{
return false;
}
return true;
}
return false;
}

public string[] Column
{
get
{
return strColumn;
}
set
{
strColumn=value;
}
}

public string[] Values
{
get
{
return strValues;
}
set
{
strValues=value;
}
}

public string[] Where
{
get
{
return strWhere;
}
set
{
strWhere=value;
}
}
public string[] GroupBy
{
get
{
return strGroupBy;
}
set
{
strGroupBy=value;
}
}
public string[] Having
{
get
{
return strHaving;
}
set
{
strHaving=value;
}
}
public string[] OrderBy
{
get
{
return strOrderBy;
}
set
{
strOrderBy=value;
}
}
public int Command
{
get
{
return iCommand;
}
set
{
iCommand=value;
}
}
public string Table
{
get
{
return strTable;
}
set
{
strTable=value;
}
}
public SqlConnection SqlConn
{
get
{
return Conn;
}
set
{
Conn=value;
}
}
}
}
sljz 2003-10-16
  • 打赏
  • 举报
回复
iIndex=strCommand.IndexOf("ORDER BY SortCondition");
strCommand=strCommand.Remove(iIndex,22);
if(strOrderBy!=null)
{
strCommand=strCommand.Insert(iIndex,"ORDER BY ");
iIndex+=9;
iPlace=1;
foreach(string strOrBy in strOrderBy)
{
strCommand=strCommand.Insert(iIndex,strOrBy);
iIndex+=strOrBy.Length;
if(strOrderBy.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex,",");
iIndex++;
}
iPlace++;
}
}
return strCommand;

}
case 1:
{
if(strColumn.Length!=strValues.Length)
return null;

strCommand="INSERT INTO Table (Column) VALUES(Value)";
strCommand=strCommand.Replace("Table",strTable);

int iIndex=strCommand.IndexOf("Column");
strCommand=strCommand.Remove(iIndex,6);
int iPlace=1;
foreach(string strCol in strColumn)
{
strCommand=strCommand.Insert(iIndex,strCol);
iIndex+=strCol.Length;
if(strColumn.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex,",");
iIndex++;
}
iPlace++;
}
iIndex=strCommand.IndexOf("Value");
strCommand=strCommand.Remove(iIndex,5);
iPlace=1;
foreach(string strValue in strValues)
{
strCommand=strCommand.Insert(iIndex,"'"+strValue+"'");
iIndex+=strValue.Length+2;
if(strValues.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex,",");
iIndex++;
}
iPlace++;
}

return strCommand;
}
case 2:
{
if(strColumn.Length!=strValues.Length)
return null;

strCommand="UPDATE Table SET Column=Value WHERE Search Criteria";
strCommand=strCommand.Replace("Table",strTable);
int iIndex=strCommand.IndexOf("Column=Value");
strCommand=strCommand.Remove(iIndex,12);
int iPlace=1;
foreach(string strCol in strColumn)
{
string strValue=strValues[iPlace-1];
strCommand=strCommand.Insert(iIndex,strCol+"='"+strValue+"'");
iIndex+=strCol.Length+strValue.Length+3;
if(strColumn.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex,",");
iIndex++;
}
iPlace++;
}
iIndex=strCommand.IndexOf("Search Criteria");
strCommand=strCommand.Remove(iIndex,15);
iPlace=1;
foreach(string strWhe in strWhere)
{
strCommand=strCommand.Insert(iIndex,strWhe);
iIndex+=strWhe.Length;
if(strWhere.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex," AND ");
iIndex+=5;
}
iPlace++;
}

return strCommand;
}
sljz 2003-10-16
  • 打赏
  • 举报
回复
public DataControls(int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete
string Table,//表名
string[] Where,//Where Search Criteria
SqlConnection objConn//服务器连接
)
{
// TODO: 在此处添加构造函数逻辑
iCommand=Command;
strTable=Table;
strWhere=Where;
Conn=objConn;
}

private string BuildCommand()
{
string strCommand;
if(iCommand>3||strTable==null)
return null;
if(strTable.Trim()=="")
return null;

switch(iCommand)
{
case 0:
{
strCommand="SELECT Column FROM Table WHERE Search Criteria GROUP BY Team HAVING Search Criteria ORDER BY SortCondition";
int iIndex=strCommand.IndexOf("Column");
strCommand=strCommand.Remove(iIndex,6);
int iPlace=1;
foreach(string strCol in strColumn)
{
strCommand=strCommand.Insert(iIndex,strCol);
iIndex+=strCol.Length;
if(strColumn.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex,",");
iIndex++;
}
iPlace++;
}
strCommand=strCommand.Replace("Table",strTable);

iIndex=strCommand.IndexOf("WHERE Search Criteria");
strCommand=strCommand.Remove(iIndex,21);
if(strWhere!=null)
{
strCommand=strCommand.Insert(iIndex,"WHERE ");
iIndex+=6;
iPlace=1;
foreach(string strWhe in strWhere)
{
strCommand=strCommand.Insert(iIndex,strWhe);
iIndex+=strWhe.Length;
if(strWhere.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex," AND ");
iIndex+=5;
}
iPlace++;
}
}
iIndex=strCommand.IndexOf("GROUP BY Team");
strCommand=strCommand.Remove(iIndex,13);
if(strGroupBy!=null)
{
strCommand=strCommand.Insert(iIndex,"GROUP BY ");
iIndex+=9;
iPlace=1;
foreach(string strGrBy in strGroupBy)
{
strCommand=strCommand.Insert(iIndex,strGrBy);
iIndex+=strGrBy.Length;
if(strGroupBy.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex,",");
iIndex++;
}
iPlace++;
}
}

iIndex=strCommand.IndexOf("HAVING Search Criteria");
strCommand=strCommand.Remove(iIndex,22);
if(strHaving!=null)
{
strCommand=strCommand.Insert(iIndex,"HAVING ");
iIndex+=7;
iPlace=1;
foreach(string strHav in strHaving)
{
strCommand=strCommand.Insert(iIndex,strHav);
iIndex+=strHav.Length;
if(strHaving.Length>iPlace)
{
strCommand=strCommand.Insert(iIndex," AND ");
iIndex+=5;
}
iPlace++;
}
}

110,502

社区成员

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

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

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