打开和关闭连接:
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语句中存在语法错误。
描述:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的起源的更多信息。
异常详细信息:系统。数据。OleDb。OleDbException:INSERT INTO语句中的语法错误。
源错误:
第100行:命令。ExecuteNonQuery();第101行://连接已关闭。第102行:DisconnectDatabase();第103行:}104行:[WebMethod]
源文件:*\bookClub\Service。aspx。cs线:102
堆栈跟踪:
[OleDbException(0x80040e14):INSERT INTO语句中的语法错误。]系统数据OleDb。OLEDB命令。执行命令和文本错误处理(OleDbHResult hr)1102900系统。数据OleDb。OLEDB命令。ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object
我不明白为什么这么近的距离会产生问题?或者为什么它会在插入时崩溃。。。
用户是MS Access中的保留字,因此只需更新SQL命令,将用户包装在方括号中:
cmd.CommandText = (@"INSERT INTO [user] ([userName]....
此外,如注释中所述,最好使用参数化查询来防止SQL注入攻击。
看看这个问题的答案,它向你展示了如何做到这一点:
此外,在该示例中,它使用一个Using块来处理关闭和处理连接,这比手动操作要好。您的代码看起来像这样,带有参数和使用块的代码:
conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +Server.MapPath("App_Data\\BookRatings.accdb"));
conn.Open();
// DbCommand also implements IDisposable
using (OleDbCommand cmd = conn.CreateCommand())
{
// create command with parameter placeholders
cmd.CommandText =
@"INSERT INTO [user] ([userName], [Address],[telephone]....) " +
"VALUES (@username, @address, @telephone,....)");
// add named parameters
cmd.Parameters.AddRange(new OleDbParameter[]
{
new OleDbParameter("@userName", userName),
new OleDbParameter("@address", Address),
new OleDbParameter("@telephone", Tel),
...
};
// execute
cmd.ExecuteNonQuery();
}
问题内容: 我知道很多人偶尔也会遇到相同的错误,但是我已经查看了所有先前的答案和我的代码,并且尝试了使用col和不使用反引号。这是我目前尝试使用的代码,但同样 该表中还有其他列,但是只有上面的我想为其余部分添加数据的列可以最初使用默认值 我一直在看这段代码很久了,现在我才发现问题,我知道这很愚蠢 问题答案: 将变量添加到SQL查询中的最防错的方法是通过 准备好的语句 添加变量。 因此,对于您运行的
主要内容:1.不指定列名,2.通过指定列名称SQL INSERT语句用于在表中插入单个或多个数据。 在SQL中,可以通过以下两种方式插入数据: 不指定列名称 通过指定列名称 假设有一个表: 的结构和数据记录如下 - EMP_ID EMP_NAME CITY SALARY AGE 1 Angelina Chicago 200000 30 2 Robert Austin 300000 26 3 Christian Denver 100000 4
主要内容:语法,实例,使用一个表来填充另一个表SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。 语法 INSERT INTO 语句有两种基本语法,如下所示: 在这里,column1, column2,...columnN 是要插入数据的表中的列的名称。 如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO
本文向大家介绍正确使用MySQL INSERT INTO语句,包括了正确使用MySQL INSERT INTO语句的使用技巧和注意事项,需要的朋友参考一下 以下的文章主要介绍的是MySQL INSERT INTO语句的实际用法以及MySQL INSERT INTO语句中的相关语句的介绍,MySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好。 My
在 T-SQL 中,INSERT 语句用于向表中添加新行。 INSERT INTO SELECT 需要源中的数据类型,目标匹配表。 表中的现有记录不受 INSERT 语句的影响。 语法: 以下是 的两种语法。 第一种语法: 其中 是表中的列名。 当为列添加值时,无法在 SQL 查询中指定列名。值的顺序与下面指定的顺序相同。 INSERT 语句的语法,第二种语法如下: 例子: 以下语句将在 CUST
INSERT INTO 语句用于向表中插入新记录。 SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录。 SQL INSERT INTO 语法 INSERT INTO 语句可以有两种编写形式。 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:INSERT INTO table_name VALUES (NULL,value2,value3,...);