2015-07-20 49 views
0

這是我的表:如果用戶名不存在 「INSERT INTO」 其他 「UPDATE」(顯示信息)

<table> 
    <tr><td><b>Utilizador:</b></td><td><asp:Label ID="username" runat="server"></asp:Label></td></tr> 
    <tr><td><b>Telefone da Empresa:</b></td><td><asp:TextBox ID="empresa" runat="server" MaxLength="13"></asp:TextBox> (Exemplo: +351234925xxx)</td></tr> 
    <tr><td><b>2º Telefone:</b></td><td><asp:TextBox ID="empresa2" runat="server" MaxLength="4"></asp:TextBox> (Exemplo: xxxx)</td></tr> 
    <tr><td><b>Telemóvel:</b></td><td><asp:TextBox ID="telemovel" runat="server" MaxLength="13"></asp:TextBox> (Exemplo: +3519xxxxxxxx)</td></tr> 
    <tr><td colspan="2"><asp:Label ID="lblInfo" runat="server" Font-Bold="True"></asp:Label></td></tr> 
    <tr><td><asp:Button ID="cmdSave" runat="server" Text="Guardar" onclick="cmdSave_Click" /></td><td></td></tr> 
</table> 

我想驗證IF用戶名存在於數據庫告訴我答案更新ELSE插入到

這是我迄今爲止的代碼。它以INSERT INTO

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     username.Text = "[" + HttpContext.Current.User.Identity.Name + "]"; 
    } 

    protected void cmdSave_Click(object sender, EventArgs e) 
    { 
     string sFilePath = Server.MapPath("Database3.accdb"); 
     OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sFilePath + ";Persist Security Info=False;"); 
     string insertCmd = "INSERT INTO colaborador(Empresa,Empresa2,Telemovel,username) VALUES (@Empresa,@Empresa2,@Telemovel,@username)"; 
     using (Conn) 
     { 
      Conn.Open(); 
      OleDbCommand myCommand = new OleDbCommand(insertCmd, Conn); 
      myCommand.Parameters.AddWithValue("@Empresa", empresa.Text); 
      myCommand.Parameters.AddWithValue("@Empresa2", empresa2.Text); 
      myCommand.Parameters.AddWithValue("@Telemovel", telemovel.Text); 
      myCommand.Parameters.AddWithValue("@username", HttpContext.Current.User.Identity.Name);    
      Response.Write(" "); 
      myCommand.ExecuteNonQuery(); 
      lblInfo.Text = "Dados guardados!"; 
      lblInfo.ForeColor = System.Drawing.Color.Green; 
     } 
    } 
} 

我的目的是回答我的桌子前顯示的回答問題[或顯示信息:「用戶已經回答」如果在我的數據庫不存在,則顯示該表到現場。 它的駕駛我瘋狂不能這樣的事情

+0

你的問題指出了@阿十分混亂...如果要在插入或更新記錄之前檢查記錄是否存在,此操作稱爲「upsert」,但MSAccess沒有這種方法,因此您需要首先查詢數據庫中的數據,並且如果您沒有收到任何記錄,請執行插入操作。它不清楚,但你要檢查什麼... –

+0

@RonBeyer我怎樣才能查詢數據庫的數據第一? 抱歉我的英文不好。現在我只能將text.box保存到我的.accdb文件中。但我想打開頁面,並用'username.Text =「[」+ HttpContext.Current.User.Identity.Name +「]」; '驗證用戶名是否存在於數據庫中。 **如果是**顯示數據庫**如果不顯示**顯示錶格以顯示text.box – KikoFHM

+0

C#和asp-classic是完全矛盾的詞彙。 – Martha

回答

0

這可以這樣來實現,

SqlCommand objcmd = new SqlCommand("SELECT 1 from Table WHERE [email protected]" , objsqlconn);//get rows if username exists 
cmd.Parameters.Add("@NAME", SqlDbType.NVarChar,20).Value = Master_product_txt.Text; 
objsqlconn.Open(); 
readr = SelectCommand.ExecuteReader(); 

if (!readr.HasRows) 
{ 
`// write Code to insert values 
}` 
else 
{ 
    //write code to retrieve values and update   
} 

編輯的代碼ツ

+0

我很困惑,你更新如果沒有行存在,並插入,如果有一個? –

+0

@學習新的抱歉,但我真的很新。我想學習未來的理解。你的代碼示例只是在代碼後面複製和過去?或者我需要添加<%或保護無效 – KikoFHM

+0

@Aツ我假裝讀取數據庫,如果用戶名已經存在顯示該用戶名的行,如果沒有插入數據庫使用我的表問題 – KikoFHM