c# - 如何使用 C# 在运行时在 MS Access 中创建存储查询

标签 c# winforms ms-access-2007

我正在开发 Windows 应用程序。在这里,我需要在运行时在 MS Access 2007 中创建存储查询。(即单击按钮)用于选择、插入、更新、删除,如何根据参数从表单调用查询?

cmmd.CommandText = "CREATE TABLE tblCustomers ([CustomerID] AUTOINCREMENT PRIMARY KEY, CustomerName Text(50), [CategoryID] Long REFERENCES tblCategories (CategoryID), [IsActive] YesNo, [ModifiedBy] Long REFERENCES tblUsers (UserID), [ModifiedDate] Date)";
cmmd.ExecuteNonQuery();

//Above Create table tblCustomers executed successfully,  

cmmd.CommandText = @"CREATE PROCEDURE prAddCustmer (CustName Text(50), CatID Long, Inact No, ModBY Long, ModDate date ) AS INSERT INTO tblCustomers  (CustomerName , CategoryID, Inactive, ModifiedBy, ModifiedDate) VALUES(CustName, [CatID], [Inac], [ModBy], [ModDate]);";
cmmd.ExecuteNonQuery();
//But got error in Create Procedure prAddCustomers, Please find error in the Stored query and suggest the correct answer 
//Syntax error in PARAMETER clause.

最佳答案

如果您想在 Access 数据库中创建一个新的存储查询,您只需准备一个命令并执行它。

例如,假设您有一个客户表并且您想要使用查询检索单个客户的记录。

创建查询

 string cmdText = @"CREATE PROCEDURE Customer_SelectOne (custID Long) as
     SELECT * FROM Customers WHERE IDCustomer = [custID]";
 OleDbCommand cmd = new OleDbCommand(cmdText, connection);
 cmd.ExecuteNonQuery();

要调用查询,它也是一个标记为 CommandType = CommandType.StoredProcedure

的简单命令
 string cmdText = "Customer_SelectOne";
 OleDbCommand cmd = new OleDbCommand(cmdText, connection);
 cmd.CommandType = CommandType.StoredProcedure;
 cmd.Parameters.AddWithValue("custID", customerID);
 OleDbDataReader reader = cmd.ExecuteReader();

上面的例子非常简单。对于更复杂的场景,您需要查看MS-Access Data Definition Language 区域中的引用资料。 .

编辑

语法:

CREATE PROCEDURE ProcName 
                 (optional list of parameters with type and size for Text)
                    AS
                 (Valid SQL Statement using the optional parameters list)

所以这应该是您的“prAddCustomers”

cmmd.CommandText = @"CREATE PROCEDURE prAddCustomers 
                     (CustName Text(50), 
                      CatID Long, 
                      IsActive BIT, 
                      ModBY Long, 
                      ModDate DATETIME )
                    as
                    INSERT INTO tblCustomers 
                      (CustomerName, CategoryID, IsActive, ModifiedBy, ModifiedDate) 
                    VALUES([CustName], [CatID], [IsActive], [ModID],[ModDate])";

关于c# - 如何使用 C# 在运行时在 MS Access 中创建存储查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22706601/

相关文章:

c# - FTP监控和新文件下载

c# - Excel 电子表格中缺少列

c# - 我们应该使用 Scala 而不是 Java 吗?

c# - winforms 多表单布局

sql-server - 使用 SSMA 将 Access 2007 数据库应用程序迁移到 SQL Server 2005 - 问题

c# - 我应该如何处理数据库中的渐进状态代码?

c# - 从代码访问表单的资源(resx 文件)

c# - 在不同机器上运行 .NET 应用程序

database - 如何在 Access 2007 中创建 View ?

c# - x64 应用程序访问 mdb 数据库