【发布时间】:2014-07-29 07:42:49
【问题描述】:
打开和关闭连接:
OleDbConnection conn;
private void ConnectToDatabase()
{
// Creates a connection to the database using an absolute path.
conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +Server.MapPath("App_Data\\BookRatings.accdb"));
// Opens the connection.
conn.Open();
}
private void DisconnectDatabase()
{
// The connection is closed.
conn.Close();
}
注册用户
public void RegisterCustomer(string userName, string Address, string Tel, string Email, string Ques, string Ans, string Pass)
{
// Connect to database.
ConnectToDatabase();
// Inserts the necessary values into the database.
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = (@"INSERT INTO user ([userName], [Address],[telephone], [emailAddress], [Password], [securityQuestion], [securityAnswer]) VALUES ('" + userName + "', '" + Address + "', '" + Tel + "', '" + Email + "', '" + Pass + "', '" + Ques + "', '" + Ans + "')");
cmd.ExecuteNonQuery();
// The connection is closed.
DisconnectDatabase();
}
错误信息
“/”应用程序中的服务器错误。
INSERT INTO 语句中的语法错误。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.Data.OleDb.OleDbException:语法错误 INSERT INTO 语句。
来源错误:
第 100 行:cmd.ExecuteNonQuery();第 101 行:// 连接关闭。第 102 行:断开数据库();第 103 行: 第 104 行:[WebMethod]
源文件:*\bookClub\Service.aspx.cs 行:102
堆栈跟踪:
[OleDbException (0x80040e14): INSERT INTO 语句中的语法错误。] System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时) +1102900
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams、对象和执行结果)+247
System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象& 执行结果)+189
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,对象和执行结果)+58
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)+162
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +107
Service.RegisterCustomer(String userName, String Address, String Tel, String Email, String Ques, String Ans, String Pass) in *\bookClub\Service.aspx.cs:102 Register.btnRegister_Click(Object sender, EventArgs e) in *\bookClub\Register.aspx.cs:46
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9752490
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+196
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) +1724
我不明白为什么关闭线会出现问题?或者为什么它在插入时崩溃...
【问题讨论】:
-
您的代码容易受到 SQL 注入攻击,请使用 SQL 参数而不是将参数直接连接到字符串中。
-
嗨,您知道您的代码容易受到SQL Injection 攻击吗?这也可能是您遇到错误的根源,尽管我认为 Tanner 在这方面更正确。你绝对不应该像那样编写连接 SQL 的代码,而应该使用 SQL 参数。
标签: c# sql database ms-access syntax