注册 登录
编程论坛 ASP技术论坛

新手求助避免向数据库插入重复数据的SQL语句

大逻刹 发布于 2010-02-22 23:32, 4457 次点击
本人超级菜鸟,通过视频教材用DW做了一个简单的网站,但让我用SQL语句自己写程序真的还是搞不太懂,以下是我的一个后台添加新用户的页面,哪位大侠能帮加段SQL语句进去,目的是帮我检测数据库中用户名列(gname)如果有重复则返回重输,否则就添加成功。万分感谢!
程序代码:
<%@LANGUAGE="VBSCRIPT"%>
<% If Session("jb")<>1 Then %>
<script>
alert(
"权限不够!")
window.location.href
="index.asp"
</script>
<% End If %>
<!--#include file="Connections/conn.asp" -->
<%
' *** Restrict Access To Page: Grant or deny access to this page
MM_authorizedUsers=""
MM_authFailedURL
="errro3.asp"
MM_grantAccess
=false
If Session("MM_Username") <> "" Then
  
If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
         (
InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_grantAccess
= true
  
End If
End If
If Not MM_grantAccess Then
  MM_qsChar
= "?"
  
If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
  MM_referrer
= Request.ServerVariables("URL")
  
if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
  MM_authFailedURL
= MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
  Response.Redirect(MM_authFailedURL)
End If
%>
<%
Dim MM_editAction
MM_editAction
= CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction
= MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
Dim MM_abortEdit
MM_abortEdit
= false
%>
<%
' IIf implementation
Function MM_IIf(condition, ifTrue, ifFalse)
  
If condition = "" Then
    MM_IIf
= ifFalse
  
Else
    MM_IIf
= ifTrue
  
End If
End Function
%>
<%
If (CStr(Request("MM_insert")) = "form1") Then
  
If (Not MM_abortEdit) Then
   
' execute the insert
    Dim MM_editCmd

   
Set MM_editCmd = Server.CreateObject ("")
    MM_editCmd.ActiveConnection
= MM_conn_STRING
    MM_
= "INSERT INTO dbo.g_glbiao (gname, gpass, gjb, xm, dm, jh, tel) VALUES (?, ?, ?, ?, ?, ?, ?)"
    MM_editCmd.Prepared
= true
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter(
"param1", 202, 1, 50, Request.Form("gname")) ' adVarWChar
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 202, 1, 50, Request.Form("gpass")) ' adVarWChar
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param3", 5, 1, -1, MM_IIF(Request.Form("gjb"), Request.Form("gjb"), null)) ' adDouble
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param4", 202, 1, 50, Request.Form("xm")) ' adVarWChar
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param5", 202, 1, 50, Request.Form("dm")) ' adVarWChar
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param6", 202, 1, 50, Request.Form("jh")) ' adVarWChar
    MM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param7", 202, 1, 50, Request.Form("tel")) ' adVarWChar
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

   
' append the query string to the redirect URL
    Dim MM_editRedirectUrl
    MM_editRedirectUrl
= "htgl.asp"
   
If (Request.QueryString <> "") Then
      
If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0) Then
        MM_editRedirectUrl
= MM_editRedirectUrl & "?" & Request.QueryString
      
Else
        MM_editRedirectUrl
= MM_editRedirectUrl & "&" & Request.QueryString
      
End If
   
End If
    Response.Redirect(MM_editRedirectUrl)
  
End If
End If
%>
<%
Dim u
Dim u_cmd
Dim u_numRows

Set u_cmd = Server.CreateObject ("")
u_cmd.ActiveConnection
= MM_conn_STRING
u_
= "SELECT * FROM dbo.g_glbiao ORDER BY t DESC"
u_cmd.Prepared
= true

Set u = u_cmd.Execute
u_numRows
= 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows
= -1
Repeat1__index
= 0
u_numRows
= u_numRows + Repeat1__numRows
%>

<%
'  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim u_total
Dim u_first
Dim u_last

' set the record count
u_total = u.RecordCount

' set the number of rows displayed on this page
If (u_numRows < 0) Then
  u_numRows
= u_total
Elseif (u_numRows = 0) Then
  u_numRows
= 1
End If

' set the first and last displayed record
u_first = 1
u_last  
= u_first + u_numRows - 1

' if we have the correct record count, check the other stats
If (u_total <> -1) Then
  
If (u_first > u_total) Then
    u_first
= u_total
  
End If
  
If (u_last > u_total) Then
    u_last
= u_total
  
End If
  
If (u_numRows > u_total) Then
    u_numRows
= u_total
  
End If
End If
%>

<%
' *** Recordset Stats: if we don't know the record count, manually count them

If (u_total = -1) Then

  
' count the total records by iterating through the recordset
  u_total=0
  
While (Not u.EOF)
    u_total
= u_total + 1
    u.MoveNext
  
Wend

  
' reset the cursor to the beginning
  If (u.CursorType > 0) Then
    u.MoveFirst
  
Else
    u.Requery
  
End If

  
' set the number of rows displayed on this page
  If (u_numRows < 0 Or u_numRows > u_total) Then
    u_numRows
= u_total
  
End If

  
' set the first and last displayed record
  u_first = 1
  u_last
= u_first + u_numRows - 1
  
  
If (u_first > u_total) Then
    u_first
= u_total
  
End If
  
If (u_last > u_total) Then
    u_last
= u_total
  
End If

End If
%>
<%
Dim MM_paramName
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
  MM_removeList
= MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL
=""
MM_keepForm
=""
MM_keepBoth
=""
MM_keepNone
=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
  MM_nextItem
= "&" & MM_item & "="
  
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL
= MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
  
End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
  MM_nextItem
= "&" & MM_item & "="
  
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm
= MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
  
End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
  MM_keepBoth
= Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "")  Then
  MM_keepURL  
= Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
  MM_keepForm
= Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  
If (firstItem <> "") Then
    MM_joinChar
= "&"
  
Else
    MM_joinChar
= ""
  
End If
End Function
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.>
<html xmlns="http://www.>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<link href="css.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.STYLE4
{    color: #FFFFFF;
    font-weight
: bold;
}
-->
</style>

</head>

<body>
<!--#include file="top.asp" -->
<table width="800" border="0" align="center" cellpadding="6" cellspacing="0">
  <tr valign="top">
    <td bordercolor="#FFFFFF" bgcolor="#003399" id="objFiles"><span class="STYLE4">添加新的管理员</span></td>
  </tr>
  <tr valign="top">
    <td bordercolor="#FFFFFF" bgcolor="#FFCC99" id="objFiles3"><form action="<%=MM_editAction%>" method="post" name="form1" id="form1">
        <table align="center">
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">用户名</td>
            <td><input type="text" name="gname" value="" size="32" />
            <div id="gname1"></div>           </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">密码</td>
            <td><input type="text" name="gpass" value="" size="32" />            </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">管理级别</td>
            <td><select name="gjb" id="gjb">
              <option value="3">普通用户</option>
              <option value="2">高级用户</option>
              <option value="1">系统管理员</option>
            </select>            </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">姓名</td>
            <td><input type="text" name="xm" value="" size="32" />            </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">代码</td>
            <td><input type="text" name="dm" value="" size="32" />            </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">联系电话</td>
            <td><input type="text" name="tel" value="" size="32" />            </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">备注</td>
            <td><input type="text" name="jh" value="" size="32" />            </td>
          </tr>
          <tr valign="baseline">
            <td align="right" nowrap="nowrap">&nbsp;</td>
            <td><input type="submit" value="添加新的管理员" /></td>
          </tr>
        </table>
        <input type="hidden" name="MM_insert" value="form1" />
    </form>
    </td>
  </tr>
</table>
<!--#include file="down.asp" -->
</body>
</html>
<%
u.Close()
Set u = Nothing
%>
5 回复
#2
xiongjl95552010-02-22 23:42
我曾经写过一段类似的程序,希望对你有用
  set rs=server.createobject("adodb.recordset")
  set rs1=server.createobject("adodb.recordset")
  sql="select * from  incident where 编号='"& j_num &"'"
  rs.Open sql,conn,1,1
  if rs.EOF or rs.bof then
    rs1.Open "Incident",conn,1,2
    rs1.addnew array("编号","地点"),_
                            array(j_num, cas_ad)

%>   
<script language="vbscript">
    alert ("信息添加成功!")
    window.location.href = "b.asp"
</script>
<%
  else
%>
<script language="vbscript">
    alert ("对不起与库内信息有冲突!")
    window.location.href = "a.asp"
</script>
<%      
  rs1.close
  set rs1=nothing
  rs.Close
  set rs=nothing
 end if
 %>
#3
cnfarer2010-02-23 08:41
方法很多,楼上的是一种

不过要先看懂代码!(你的代码好像都是DW生成的啊)
#4
hmhz2010-02-23 13:27
方法很简单,避免添加重复数据,就用你要添加的数据先查询数据库是否存在就行了
#5
大逻刹2010-02-23 19:56
我的全部是用DW做的啊,所以代码我自己都看不太懂,二楼大侠我把你的代码复制上去是不是就可以了啊,你说把这段代码放在哪个位置呢,还望各位大侠不吝赐教,最好能帮我加到代码里面去,谢谢!
#6
xiongjl95552010-03-06 10:41
回复 5楼 大逻刹
功能是一样的,如我没看错的话,你的程序是在向数据库里添加用户时为了避免用户名重复而作一个判断,这段语句就写在向数据库中添加用户那里。抱歉我的时间有限不能帮你完成。
1