C# 试图连接到Access数据库表以检索数据,但遇到困难
第一次做数据库编程,所以我只是在Access中创建了一个数据库,试图用它做点什么。我在桌面上创建的数据库名为“TestDatabase”,在该数据库中创建的表名为“TestTable”。这是我的代码:C# 试图连接到Access数据库表以检索数据,但遇到困难,c#,sql,database,database-programming,C#,Sql,Database,Database Programming,第一次做数据库编程,所以我只是在Access中创建了一个数据库,试图用它做点什么。我在桌面上创建的数据库名为“TestDatabase”,在该数据库中创建的表名为“TestTable”。这是我的代码: using System; using System.Data; using System.Data.SqlClient; namespace DatabaseTest { class Test { static void Main(string[] args)
using System;
using System.Data;
using System.Data.SqlClient;
namespace DatabaseTest
{
class Test
{
static void Main(string[] args)
{
// I don't know if my connection is correct or not. My access database is on my local desktop though
string connectionString = "Data Source = (local); Initial Catalog = TestDatabase; Integrated Security = SSPI";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataReader reader = null;
SqlCommand command = new SqlCommand("SELECT * from TestTable", connection);
connection.Open();
try
{
reader = command.ExecuteReader();
}
catch (InvalidOperationException e)
{
Console.WriteLine(e.ToString());
}
// print all the data in the table
while (reader.Read())
{
Console.Write(reader[0].ToString() + ", ");
Console.Write(reader[1].ToString() + ", ");
Console.Write(reader[2].ToString() + ", ");
Console.Write(reader[3].ToString() + ", ");
Console.WriteLine(reader[4].ToString());
}
}
Console.ReadLine();
}
}
}
这是我的桌子,如果你想知道的话:(只是一个玩具的例子)
但是,它不起作用,因为我的控制台上没有显示任何内容。我做错了什么。我真的需要一些帮助。谢谢。要连接到Access DB,您需要以下内容
conn = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DbPath\SomeAccessFileName.accdb")
配置文件将像这样设置,以实现标准安全性
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Persist Security Info=False;
参考链接
用于在代码隐藏中创建连接对象
using System.Data.Odbc;
using(OleDbConnection connection = new OleDbConnection(con))
{
connection.Open();
OleDbCommand command = new OleDbCommand("SELECT * from TestTable", connection)
using(OleDbDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
Console.Write(reader[0].ToString() + ", ");
Console.Write(reader[1].ToString() + ", ");
Console.Write(reader[2].ToString() + ", ");
Console.Write(reader[3].ToString() + ", ");
Console.WriteLine(reader[4].ToString());
}
}
}
您是否在本地主机上运行SQL Server(或其他DB)实例?这通常就是“数据源=(本地)”的用途。Access通常加载类似“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\\filename.accdb”的内容。你使用Access而不是mysql有什么原因吗?@devlnotate你的问题是基于你的意见的。现在不是每个人都使用相同的
DBMS
是解决这类问题的好网站。这是我的建议。这里有很多不同的选择。但是如果您滚动到页面底部,每个不同版本的Access都有链接。您能添加if(!reader.hasRow){Console.WriteLine(“empty”);}
并告诉我们它在做什么吗?请删除connectionString中的空格,并将connection.Open()
放在try catch中
using System.Data.Odbc;
using(OleDbConnection connection = new OleDbConnection(con))
{
connection.Open();
OleDbCommand command = new OleDbCommand("SELECT * from TestTable", connection)
using(OleDbDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
Console.Write(reader[0].ToString() + ", ");
Console.Write(reader[1].ToString() + ", ");
Console.Write(reader[2].ToString() + ", ");
Console.Write(reader[3].ToString() + ", ");
Console.WriteLine(reader[4].ToString());
}
}
}