C#访问数据库查询

时间:2010-07-30 15:27:15

标签: c# ms-access

如何使用C#执行访问查询?我想创建表,并从我的访问数据库中插入/选择数据。

3 个答案:

答案 0 :(得分:2)

您应该查看使用OdbcConnectionOdbcCommand可以执行的所有操作。

您甚至可以从以下位置窃取连接的连接字符串:

Access 2007 Connection String Samples

......这应该足以让你开始。

答案 1 :(得分:2)

这是一个帮助您入门的教程。

http://www.csharphelp.com/2006/01/ms-access-application-with-c/

根据您的Access版本,您可能还想查看不同的连接字符串。

http://connectionstrings.com

答案 2 :(得分:1)

以下是2个非常好的入门教程

Here is a good intro into what is actually going on.
Here has some pretty helpful example code.

  

Protip:确保安装了正确的ODBC驱动程序   还没有。我觉得SOOOO很愚蠢,因为没有把它搞清楚   开始大声笑; p

至于处理你的数据库假设您没有动态创建访问数据库所有您需要做的就是创建访问中的数据库,保存它,并将其作为数据源添加到您的应用程序。{{3 }}

示例插入:

var insertStatement = @"insert into familytree (firstname, lastname, city, Tel, Email) values (@firstname, @lastname, @city, @tel, @email); SELECT @@IDENTITY";

//Open your connection and command
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand cmd = new OleDbCommand(insertStatement, connection))
{
    //set parameters and values
    var identityQuery  = @"SELECT @@IDENTITY";
    var identity = -1;
    cmd.Parameters.Add("@firstname", 'foo');
    cmd.Parameters.Add("@lastname", 'foo');
    cmd.Parameters.Add("@city", 'foo');
    cmd.Parameters.Add("@tel", '6666666');
    cmd.Parameters.Add("@email", 'foo@foo.com');

    connection.Open();

    try{
        var numberOfRowsEffected = command.ExecuteNonQuery();
        //we should have 1 row effected. 
        if(numberOfRowsEffected>0){
            cmd.CommandText =  identityQuery;
            //get the identity 
            identity = (int)cmd.ExecuteScalar(); 
        }
    }catch(InvalidOperationException ex){
        //log and throw: 
        //cant open connection or Cannot execute a command 
        //within a transaction context that differs from the 
        //context in which the connection was originally enliste
    }

    return identity;
}

如果您想要创建表,则同样适用。只需编写您的create table语句。 See here并执行。但就常见方法而言,您通常希望为大多数简单应用程序设置表结构,并让您的应用程序处理插入,更新和可能的删除。不是说你不应该这样做,但我会尽可能考虑KISS。

哦,如果你想知道你能做什么,这里是OleDbCommand类的msdn引用。
see here for example