关于表的操作,高分求助-----在线等,谢谢

khpcg 2005-05-31 12:34:36
问题1:string sqlEmployee="Select * From Employee where UserNumber=@UserNumber";判断UserNumber用户是否存在。若存在就下一步,不存在就退出。
问题2:string strSelect="Select * From AuthenFactorRecord Where UserNumber=@UserNumber and TStamp= @TStamp And RandomNumber=@RandomNumber";判断记录是否存在,若存在就退出。若不存在,就取UserNumber用户的个人信息(表Employee里),如EmployeeID、RegisterSiteID、PermissionGroupID。



有源码,调试通过,就立马结贴!
谢谢
...全文
125 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
khpcg 2005-05-31
  • 打赏
  • 举报
回复
但还要对表有操作啊
marvelstack 2005-05-31
  • 打赏
  • 举报
回复
使用SqlCommand.ExecuteScalar ()方法就可以进行判断,
zdliang 2005-05-31
  • 打赏
  • 举报
回复
看不出来这个问题的难点呀,判断一下Table里面的Rows.Count不就可以知道了吗?
zdliang 2005-05-31
  • 打赏
  • 举报
回复
string sqlEmployee="Select * From Employee where UserNumber='"+strUserId+"'";

既然没有在数据库里面写存储过程,就直接用sql语句吧,把你的类似的都改成这样就可以了,主意单引号
khpcg 2005-05-31
  • 打赏
  • 举报
回复
除去密码算法部分,跟数据库有关的代码都贴出来了啊,希望大家多指点指点!
khpcg 2005-05-31
  • 打赏
  • 举报
回复
private string Process(string strIp,string strICode,string strDatabase,string strTable)
{

string processkey="" ;
int iNumYear;
int intThisYear,intThisMonth,intThisDay;
string strUserId,strClientDate,strRkey,strRCode="";
string strTemp,EmployeeID,RegisterSiteID,PermissionGroupID;
EmployeeID="";
RegisterSiteID="";
PermissionGroupID="";
string strUserKey="";
int iTotalYearChr;
string stringstrICode=strICode.Trim().ToString();
string[] s=stringstrICode.Replace("YYY","|").Split('|');
string [] keyNumber=new string[s.Length];
//string strKeyNumber;
for(int i=0;i<s.Length;i++)
{

keyNumber[i]=s[i].Trim().ToString();

}

//varAuthlist = int.Parse(strICode.Split("YYY"));
string strKeyNumber0=keyNumber[0];
string strKeyNumber1=keyNumber[1];
string strKeyNumber2=keyNumber[2];
string strKeyNumber3=keyNumber[3];
string strKeyNumber4=keyNumber[4];
string strKeyNumber5=keyNumber[5];
//string strKeyNumber0=keyNumber[0];
strUserId = keyNumber[1].ToString().Trim();
strRkey =keyNumber[3].ToString().Trim();
strRCode = keyNumber[4].ToString().Trim();
//strClientDate = int.Parse(keyNumber[2]).ToString("yyyy - mm - dd");
System.DateTime dtTimeFirst = System.Convert.ToDateTime(keyNumber[2].ToString().Trim());
strClientDate =keyNumber[2].ToString().Trim() ;
this.tableConnection = new System.Data.SqlClient.SqlConnection();
this.tableConnection.ConnectionString="workstation id=\"HKZJZB-7564A28D\";packet size=4096;user id=sa;password=123456;data source=LIUTONG;persist security info=False;initial catalog=AuthTEST";
try
{
tableConnection.Open();
}
catch//数据库连接有误
{
throw new System.ArgumentException();
}
intThisYear=dtTimeFirst.Year;
intThisMonth=dtTimeFirst.Month;
intThisDay=dtTimeFirst.Day;
//string sqlEmployee="Select * From @strTable where UserNumber=@strUserId";
string sqlEmployee="Select * From Employee where UserNumber=@UserNumber";
SqlDataAdapter adapterEmployer = new SqlDataAdapter();
adapterEmployer.SelectCommand = new SqlCommand(sqlEmployee,tableConnection);

adapterEmployer.SelectCommand.Parameters.Add("@UserNumber",strUserId);

DataSet demployer = new DataSet();


adapterEmployer.Fill(demployer,"usrEmp");
//DataRow rsUser = demployer.Tables[0].Rows.Find(strUserId);
if(demployer.Tables["usrEmp"].Rows.Count==0)
{
processkey = "2";
goto Label;
}

string strSelect="Select * From AuthenFactorRecord Where UserNumber=@UserNumber and TStamp= @TStamp And RandomNumber=@RandomNumber";


SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(strSelect,tableConnection);
adapter.SelectCommand.Parameters.Add("@UserNumber",strUserId);
adapter.SelectCommand.Parameters.Add("@TStamp",strClientDate);
adapter.SelectCommand.Parameters.Add("@RandomNumber",strRkey);


//SqlDataAdapter adapter = new SqlDataAdapter(strSelect,tableConnection);
DataSet ds = new DataSet();
adapter.Fill(ds,"dsAuth");
DataRow r=ds.Tables.Add().NewRow();
//DataRow r = ds.Tables[0].Rows.Find(0);





//tableConnection.Close();

if (ds.Tables["dsAuth"].Rows.Count>0) //时间戳已使用,认证参数有误
{
processkey = "4";
goto Label;
}

//DataTable rsUser=new DataTable();
//rsUser=demployer.Tables;
foreach(DataRow dr in demployer.Tables["usrEmp"].Rows)
{
if(dr["EmployeeID"].ToString()!=string.Empty)
EmployeeID = dr["EmployeeID"].ToString().Trim();
if(dr["RegisterSiteID"].ToString()!=string.Empty)
RegisterSiteID = dr["RegisterSiteID"].ToString().Trim();
if(dr["PermissionGroupID"].ToString()!=string.Empty)
PermissionGroupID = dr["PermissionGroupID"].ToString().Trim();


}

/*if(demployer.Tables["usrEmp"].Columns["EmployeeID"].IsNull())
{
EmployeeID=demployer.Tables["usrEmp"].Rows["EmployeeID"].ToString();
}
if(demployer.Tables["usrEmp"].Rows["RegisterSiteID"].IsNull())
{
RegisterSiteID=demployer.Tables["usrEmp"].Rows["RegisterSiteID"].ToString();
}
if(demployer.Tables["usrEmp"].Rows["PermissionGroupID"].IsNull())
{
PermissionGroupID=demployer.Tables["usrEmp"].Rows["PermissionGroupID"].ToString();
}*/
/*if(!rsUser.IsNull("EmployeeID"))
{
EmployeeID=rsUser["EmployeeID"].ToString();
}
if(!rsUser.IsNull("RegisterSiteID"))
{
RegisterSiteID=rsUser["RegisterSiteID"].ToString();
}

if(!rsUser.IsNull("PermissionGroupID"))
{
PermissionGroupID=rsUser["PermissionGroupID"].ToString();
}*/


foreach(DataRow dr in demployer.Tables["usrEmp"].Rows)
{
strUserKey = dr["KeyData"].ToString().Trim();
}
//strUserKey =demployer.Tables["usrEmp"].Rows["KeyData"].ToString() ;
//'取出该用户号对应的密钥密文(用户的密钥在数据库中是加密存放的)

r["userIP"] = strIp;
r["usernumber"]=strUserId;
r["tstamp"]=strClientDate;
r["RandomNumber"]=strRkey;
r["logintime"]=System.DateTime.Now;
r["Success"]="成功";
ds.Tables[0].Rows.Add(r);
adapter.Update(ds);

tableConnection.Close();
//zanshi

//processkey = EmployeeID + "-" + RegisterSiteID + "-" + PermissionGroupID;
return( processkey);





Label:
{
//出错处理

if( processkey != "1")
{
//r.AddNew;
r["userIP"] = strIp;
r["usernumber"] = strUserId;
r["EmployeeID"] = EmployeeID;
r["tstamp"] = strClientDate;
r["RandomNumber"] = strRkey;
r["logintime"] = System.DateTime.Now;
r["AuthResult"] = "失败";
ds.Tables[0].Rows.Add(r);
adapter.Update(ds);
}
tableConnection.Close();
return processkey;// 断开与数据库和数据表的连接

}
}

khpcg 2005-05-31
  • 打赏
  • 举报
回复
都说简单,奇怪的是这个问题现在都没人搞定!!!!
zdliang 2005-05-31
  • 打赏
  • 举报
回复
你这个是存储过程?我用的存储过程都是写在数据库里面的呀
khpcg 2005-05-31
  • 打赏
  • 举报
回复
老大,别这样说,从未导过分,只是经常上来看看
khpcg 2005-05-31
  • 打赏
  • 举报
回复
string sqlEmployee="Select * From Employee where UserNumber=@UserNumber";
SqlDataAdapter adapterEmployer = new SqlDataAdapter();
adapterEmployer.SelectCommand = new SqlCommand(sqlEmployee,tableConnection);
adapterEmployer.SelectCommand.Parameters.Add("@UserNumber",strUserId);
执行到最后一步,错误提示是没主关键字,难道没主关键字就不能这样做吗?
oldjackyone 2005-05-31
  • 打赏
  • 举报
回复
估计是导分导出来滴哟...

俺的一个五角账号丢了...
khpcg 2005-05-31
  • 打赏
  • 举报
回复
惭愧,我是搞安全得,对数据库这块不熟悉
zdliang 2005-05-31
  • 打赏
  • 举报
回复
也许是别人的帐号,呵呵
zdliang 2005-05-31
  • 打赏
  • 举报
回复

foreach(DataRow dr in myInfoData.Tables[InfoData.INFO_TABLE].Rows)
{
if(dr["EmployeeID"].ToString()!=string.Empty)
EmployeeID = dr["EmployeeID"].ToString().Trim();
.....
.....
}
syeerzy 2005-05-31
  • 打赏
  • 举报
回复
我晕死,看尽也看不明白这2个问题难度在什么地方了。。。

楼主5个三角是怎么来的?
khpcg 2005-05-31
  • 打赏
  • 举报
回复
SORRY,我知道users了,现在得问题是表中某行得问题
userAdapter.Fill(userSet,"users");
操作完成后,对结果进行判断并操作:
以下是从数据库中取出该用户号对应的其它用户信息:姓名、部门、权限
If Not IsNull(rsUser("EmployeeID")) Then
EmployeeID = Trim(rsUser("EmployeeID"))
End If
If Not IsNull(rsUser("RegisterSiteID")) Then
RegisterSiteID = Trim(rsUser("RegisterSiteID"))
End If
If Not IsNull(rsUser("PermissionGroupID")) Then
PermissionGroupID = Trim(rsUser("PermissionGroupID"))
此为VB写得,现在希望将它用C#实现,谢谢大家帮助

zdliang 2005-05-31
  • 打赏
  • 举报
回复
"users"就是这个表在dataset中的一个名字,自己起的
userSet.Tables["users"]便于访问而已
khpcg 2005-05-31
  • 打赏
  • 举报
回复
to wuxingpeng(动脑编程)
userAdapter.Fill(userSet,"users");中得users是怎么来得啊
zdliang 2005-05-31
  • 打赏
  • 举报
回复
DataTable myDataViewSource=new DataTable();
myDataViewSource=userSet.Tables["users"];
DataView myDataView=new DataView(myDataViewSource,RowFilter,SortLimit,DataViewRowState.CurrentRows);

这个不知道有没有用,RowFilter里面放置的东西就像where后的条件一样

比如
RowFilter="zjzh ='"+Number.Text.PadLeft(12,'0')+"'";

SortLimit用于排序的

记得还有其他的表操作的方法,楼主查查看
khpcg 2005-05-31
  • 打赏
  • 举报
回复
谢谢大家,还要对select后得表进行操作啊
加载更多回复(2)

110,538

社区成员

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

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

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