我的连接 C# 有问题 - Microsoft Access 2010
Posted
技术标签:
【中文标题】我的连接 C# 有问题 - Microsoft Access 2010【英文标题】:Something wrong with my connection C# - Microsoft Access 2010 【发布时间】:2013-11-09 20:16:50 【问题描述】:好的,我在 Visual Studio 的 C# (2012) 和 Access 之间创建了一个连接。这意味着,我已经完成了手动方式(没有代码)。但是这种方法并不能帮我做我想做的事,所以我把编码的方式也做了。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Configuration;
using System.Xml.Serialization;
namespace WindowsFormsApplication1
public partial class horaireForm : Form
DateTime semSess;
int numSemaine;
int jourSem;
int periode;
string theoOuLabo;
string lesCours;
string cours;
string lesProfs;
string unprof;
string lesLocaux;
string lesGroupes;
string laComm;
string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Stanley\\Desktop\\stuff\\Hiver 2013\\Horaires_EcranA2013.accdb";
(对不起,如果它很长)。无论如何,在此之后,我在这里有这个代码,它从组合框中获取信息(每个案例都是大学学期的几周的日期)。由于显然如果主键是组合框中的值,我无法选择主键,因此我决定使用日期作为组合框中的选择值,然后使用它来选择数据库中的实际主键。
semSess = Convert.ToDateTime(comboSemSess.Text);
OleDbConnection laConn = new OleDbConnection(conn);
try
laConn.Open();
laComm = "SELECT NumeroSemaine FROM SemainDelaSession WHERE DebutSemaine = " + semSess;
OleDbCommand myAccessCommand = new OleDbCommand(laComm, laConn);
OleDbDataReader reader = myAccessCommand.ExecuteReader();
while (reader.Read())
numSemaine = Convert.ToInt32(reader["NumeroSemaine"]);
catch
MessageBox.Show("Une erreur s'est produite en accédant à la base de données");
finally
laConn.Close();
但是,我仍然无法连接。它仍然得到消息框。这是否与我之前完成另一个连接的事实有关,或者我输入connectionString的方式,因为我不知道。
【问题讨论】:
为什么不捕捉异常,看看它在说什么? catch(Exception ex)MessageBox.Show(ex.ToString()) 你就会知道哪里出了问题。 感谢您的回答。我完全忘记了你可以做到这一点。无论如何,我尝试这样做......当我尝试将“semSess”分配给“DebutSemaine”时出现语法错误。说类似“DebutSemaine = 2013-02-25 00:00:00”。 【参考方案1】:我可以看到一些问题...在While (reader.Read())
块中,您每次都会覆盖numSemaine
,因此您只能在数据读取器中获得最后一个结果。
此外,SELECT 语句中的日期应该在其周围加上引号(将其视为 SQL 中的字符串),并且实际上它应该是参数化的而不是连接的(很难从组合框中进行 SQL 注入,但并非不可能,无论如何这是一个好习惯)。
此外,路径只需要在目录之间有一个\
,而不是两个。
【讨论】:
感谢您的回复。但是,每次我只用一个“\”放置路径时,Visual Studio 都会将其标记为红色。以上是关于我的连接 C# 有问题 - Microsoft Access 2010的主要内容,如果未能解决你的问题,请参考以下文章
在使用 C# 时对设置与 Microsoft Access 数据库的连接感到困惑
为啥我的C#操作EXCEL总体提示“找不到可安装的isam“,确实系统自带了mdac2.81