[英]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.