C# 检查用户是否存在,并停止数据库插入(access数据库)

C# 检查用户是否存在,并停止数据库插入(access数据库),c#,asp.net,C#,Asp.net,我只是不知道如何检查数据库中是否存在用户,并阻止它向数据库插入新行(这将导致错误,因为我将用户设置为主键) 受保护的无效按钮1\u单击1(对象发送者,事件参数e) { { OleDbConnection myconnection=新的OleDbConnection(); myconnection.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;数据源=| DataDirectory | Event.mdb”; myconnection.Ope

我只是不知道如何检查数据库中是否存在用户,并阻止它向数据库插入新行(这将导致错误,因为我将用户设置为主键)

受保护的无效按钮1\u单击1(对象发送者,事件参数e)
{
{
OleDbConnection myconnection=新的OleDbConnection();
myconnection.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;数据源=| DataDirectory | Event.mdb”;
myconnection.Open();
OleDbCommand myCommand=新的OleDbCommand();
myCommand.Connection=myconnection;
myCommand.CommandType=CommandType.Text;
string query=string.Format(“从uname='{0}'的用户中选择COUNT(*));
myCommand.CommandText=查询;
尝试
{
int amountfussers=(int)myCommand.ExecuteScalar();
if(amountfuser<1)
{
String myQuery=“插入用户(uname、upassword、email、type)值(“+UserName.Text+”、“+Password.Text+”、“+email.Text+”、“user”);
myCommand.CommandText=myQuery;
myCommand.ExecuteOnQuery();
Label1.Text=“用户已注册”;
}
其他的
{
Label1.Text=“用户已存在”;
UserName.Text=“”;
Email.Text=“”;
}
}
最后
{
myconnection.Close();
}
}
}

你的问题一点也不清楚,但我可以提出一些建议

首先,我认为您忘记了将
uname
作为您的

string query = string.Format("SELECT COUNT(*) FROM users WHERE uname = '{0}'");
线路。您使用了
{0}
,但从未将任何值指向此参数。(我假设您没有一个名为
{0}
)的用户名,比如

作为第二,请始终使用。这种字符串连接对Attakc是开放的

喜欢


我想检查username.Text中的用户名是否在 数据库或否,如果是,我想停止插入新数据

然后您应该先使用
选择
检查您的用户名是否存在于数据库中

string query = string.Format("SELECT * FROM users WHERE uname = '{0}'", UserName.Text);
OleDbCommand myCommand = new OleDbCommand();
myCommand.CommandText = query;
SqlDataReader reader = myCommand.ExecuteReader();
if(reader.HasRows)
{
  //Your username exist in your database
}
else
{
  //Doesn't exist
}
更正您的查询:

query = string.Format("SELECT COUNT(*) FROM users WHERE uname = '{0}'" ,UserName.Text );

您缺少参数uname,您将用户名文本框的文本传递给uname

例如

"SELECT COUNT(*) FROM users WHERE uname='" + UserName.Text +"'

我不明白。你的问题到底是什么?您是否收到任何异常或错误消息?是的,我收到一个异常,因为主键中有重复的值。我想检查username.Text中的用户名是否在数据库中可用,或者是否可用,以及是否停止插入新的用户名data@user3132548更新了我的答案。看一看。@user3132548-如果这个解决方案适合您,那么您可以接受它作为答案。
string query = string.Format("SELECT * FROM users WHERE uname = '{0}'", UserName.Text);
OleDbCommand myCommand = new OleDbCommand();
myCommand.CommandText = query;
SqlDataReader reader = myCommand.ExecuteReader();
if(reader.HasRows)
{
  //Your username exist in your database
}
else
{
  //Doesn't exist
}
query = string.Format("SELECT COUNT(*) FROM users WHERE uname = '{0}'" ,UserName.Text );
"SELECT COUNT(*) FROM users WHERE uname='" + UserName.Text +"'