簡體   English   中英

SQL查詢UPDATE不能正常工作

[英]SQL query UPDATE is not working asp.net

我有一個簡單的asp.net網站和一個簡單的數據庫。

數據庫有一個表具有這種結構的Users

在此輸入圖像描述

現在我一直在嘗試執行這個SQL命令

UPDATE [Users] 
SET [UserName] = 'Teazst22',
    [Password] = 'Tesst',
    [Email] = 'Test@gmail.com',
    [FirstName] = 'Test12',
    [LastName] = 'Work1',
    [BirthDate] = '30/1/1920' 
WHERE [Email] = 'Test@gmail.com'

命令從我的C#代碼執行:

    public static void ChangeTable(string strSql, string FileName)
{
    try
    {
        OleDbConnection c = MakeConnection(FileName);
        OleDbCommand comm = new OleDbCommand();
        comm.CommandText = strSql;
        comm.Connection = c;
        comm.ExecuteNonQuery();
        c.Close();
        System.Diagnostics.Debug.WriteLine("SQL COMMAND Executed");
    }
    catch (Exception e)
    {
        System.Diagnostics.Debug.WriteLine(e.ToString());
    }
}

}

public static OleDbConnection MakeConnection(string dbFile)
{
    OleDbConnection c = new OleDbConnection();

    if (dbFile.ToLower().Contains(".accdb"))
        // MS Access >=2007
        c.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/" + dbFile);
    else
        // MS Access 2003
        c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/" + dbFile);

    c.Open();
    return c;

}

 private String Email = "";
private String Username = "";
protected void Page_Load(object sender, EventArgs e)
{
    if ((Session["IsAdmin"] != null && !(bool)Session["IsAdmin"]) || Session["IsAdmin"] == null)
        Response.Redirect("Default.aspx");

   String StrSql = "Select * from [Users] where Email='{0}'";
    StrSql = String.Format(StrSql, Request.QueryString.Get("Em"));
   DataTable Dt=  MyDbase.SelectFromTable(StrSql, "Db.ACCDB");
    if (Dt.Rows.Count == 1)
    {
        USTXT.Text = Dt.Rows[0]["UserName"].ToString();
        PTXT.Text = Dt.Rows[0]["Password"].ToString();
        EmailTXT.Text = Dt.Rows[0]["Email"].ToString();
        FirstNTXT.Text = Dt.Rows[0]["FirstName"].ToString();
        LastNTXT.Text = Dt.Rows[0]["LastName"].ToString();
        BirthDTXT.Text = Dt.Rows[0]["BirthDate"].ToString();
        Email = EmailTXT.Text;
        Username = USTXT.Text;
    }

}
protected void SaveBTN_Click(object sender, EventArgs e)
{
    String StrSql = "Update [Users] Set [UserName]='{0}',[Password]='{1}',[Email]='{2}',[FirstName]='{3}',[LastName]='{4}',[BirthDate]='{5}' WHERE [Email]='{6}'";
    StrSql = String.Format(StrSql, USTXT.Text, PTXT.Text, EmailTXT.Text, FirstNTXT.Text, LastNTXT.Text, BirthDTXT.Text , Email);

    MyDbase.ChangeTable(StrSql,"Db.ACCDB");
    Response.Redirect("Admin.aspx");
}

執行代碼時沒有顯示錯誤,但是當我檢查數據庫時,沒有任何改變......很簡單,命令不起作用。

PS:我使用的數據庫是Microsoft Access 2007

請確保您觀察的mdb文件位於“Data Directory”文件夾中。 你可能正在檢查錯誤的文件。 還要檢查該mdb文件的屬性,其上次修改時間是否大約是您執行數據庫操作的時間。

只需將此代碼放入try catch語句中並嘗試捕獲您的錯誤..因為我似乎絕對可以通過這種方式找到問題

try 
{
    OleDbConnection c = MakeConnection(Database name);
    OleDbCommand comm = new OleDbCommand();
    comm.CommandText = SqlStr;
    comm.Connection = c;
    comm.ExecuteNonQuery();
    c.Close();
}
catch  (Exception e)
{
    Console.WriteLine(e.Message.ToString());
}

可能是您有一個區分大小寫的db排序規則並且您要將大寫字母與小寫字母進行比較? https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

test =如果區分大小寫,則測試不會給出任何結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM