Tag: ms access

C#Microsoft Access参数化查询无法正常工作

我已经对此进行了研究,虽然下面的问题很相似,但我已经尝试了所有这些,但似乎都没有解决我的问题。 从Access数据库获取数据的正确方法 使用参数将数据插入访问数据库 通过单击按钮将数据从Access获取到C#中的文本框 Access数据库的UPDATE查询不能正常工作C#.NET 传递参数以从c#访问查询 用于插入值的参数化查询 以下是相关代码的一部分: private void LoadDetails(int index) { try { connection.Open(); command = new OleDbCommand(“SELECT * from tagsTbl WHERE ID=@1”, connection); command.Parameters.AddWithValue(“@1”, index); reader = command.ExecuteReader(); while (reader.Read()) { nameTextBox.Text = reader[“leName”].ToString(); altTextBox.Text = reader[“altName”].ToString(); unitTextBox.Text = reader[“currUnit”].ToString(); tagTextBox.Text = reader[“currTag”].ToString(); oldTextBox.Text = reader[“oldTag”].ToString(); descTextBox.Text = reader[“currDesc”].ToString(); } connection.Close(); } […]

“使用/ main编译以指定包含入口点的类型。”

根据下面的代码,我收到以下消息。 我相当肯定“为什么”我得到它,我只是不知道如何重新安排代码来移动/删除/替换其中一个错误导致语句。 “使用/ main编译以指定包含入口点的类型。” 在“static void Main(string [] args)”下面有一堆代码,我从http://support.microsoft.com/kb/816112得到的目的是为了从自动增量获取ID,所以当其余代码填充Access数据库时,我可以自动增加它。 任何帮助表示赞赏。 我们也欢迎使用更简单的代码获得结果的建议! namespace WindowsFormsApplication1 { public partial class Form1 : Form { OleDbConnection vcon = new OleDbConnection(@”Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Hazardous Materials\KinneyDatabase.accdb”); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { vcon.Open(); try { StreamReader sr = new StreamReader(@”C:\Hazardous Materials\cities.txt”); string line = sr.ReadLine(); StreamReader sr2 […]

OleDB INSERT命令错误

我有一个数据库(我使用MS ACCESS)我有这个插入代码,我可以读取数据但写入时出错,我按照说明但它不起作用这里是我的代码 OleDbConnection con = new OleDbConnection(@” provider=Microsoft.ace.Oledb.12.0; data source=\\sisc-erelim\4_Printing\VTDB\DB\VirginiTEADB2.accdb; Persist Security Info=False”); private void button1_Click(object sender, EventArgs e) { try { OleDbCommand cmd = new OleDbCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = “INSERT INTO Accountstbl (Username, Password)” + “VALUES (‘” + textBox1.Text + “‘,'” + textBox2.Text + “‘)”; cmd.Parameters.AddWithValue(“@Username”, textBox1.Text); cmd.Parameters.AddWithValue(“@Password”, textBox2.Text); cmd.Connection = con; […]

如何在C#模块中嵌入ms-access表单?

我们开发了相当重的ms访问应用程序,有大约300个表单(是的!)。 当代码实例化这些表单(并且不只是“打开”它们)时,我们可以在屏幕上显示同一表单的多个实例。 为了绕过VBA的局限性,以及一些面向对象概念(如inheritance,接口,封装等)的不良实现,代码管理: 从我们表单的所有活动实例中创建的Windows集合。 一个’ghost windows’对象,它包含我们代码所需的所有额外属性和方法。 因此,作为一个例子,当我想要达到我的一个实例的标准属性时,我可以写: MyWindows.accessWindow(hWnd).name 其中hWnd是Windows提供的句柄,并命名标准form()。name属性 但如果我想达到我的一个实例的特定属性,我可以写: MyWindows.ghostWindow(hWnd).originalRecordset 其中’originalRecordset’包含原始的ADODB.recordset,它是在表单第一次实例化时加载的(意味着在用户做出任何更改之前……可能很有趣!) 它工作得很好,但编码它可以是一个真正的PITA,特别是当人们知道在C#中做类似的事情是多么明亮,只要可以将MS-Access表单对象封装到更通用的C#对象中。 所以这就是问题:可以将MS-Access表单嵌入到自制的C#dll中吗? 它可行吗? 我不希望得到完整的答案,但我希望能有一些帮助才能走上正轨。 好朋友好吗?

从.NET中的MS Access数据库读取OLE映像时出现ArgumentException

我试图从Access数据库中读取图像。 它读取字节但是当我尝试使用Image.FromStream时它会给出一个未处理的System.ArgumentException。 这是我的代码: private Image ReadImageFromDB() { Image fetchedImg; if (rownumber >= 0) { byte[] fetchedimgbytes = (byte[])localDataTable.Rows[5][“Object”]; MemoryStream stream = new MemoryStream(fetchedimgbytes); fetchedImg= Image.FromStream(stream); return fetchedImg; } else { MessageBox.Show(“no image”); return null; } }

将数据插入和更新到MDB

我正在尝试制作一个简单的测试程序,可以打开MDB文件并做3个基本的事情,MDB有3个字段 ,所有这些都是文本: ID INFO TEXT 根据ID =显示数据得到了这个工作 根据ID =问题更改数据 添加新数据=问题 show数据与此代码一起使用: con = new OleDbConnection(“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\\mdb\\testmdb.mdb”); cmd = new OleDbCommand(); cmd.Connection = con; cmd.CommandText = “select Info, text from Table1 where ID = ‘” + int.Parse(textBox1.Text) + “‘ “; con.Open(); // open the connection OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) […]

以编程方式使用C#更新MS Access数据库中的链接表

我有两个Access 2003数据库( fooDb和barDb )。 fooDb中有四个表链接到barDb表。 两个问题: 如何更新表格内容( fooDb链接表应与barDb的表格内容同步) 如何使用ADO.NET将表重新链接到不同的barDb 我用谷歌搜索,但没有得到任何有用的结果。 我发现如何在VB(6)和DAO中实现这一点,但我需要一个C#的解决方案。

将byte 作为文件打开而不首先将其实际保存为文件

打开在数据库中存储为byte []的Word文件的最佳方法是什么? 我必须将一些文档存储在Access数据库中–Word文件,2003及更高版本 – 在严格用于CD的应用程序上。 不幸的是,他们必须在数据库中,不能存放在文件夹中。 我将它们存储为OLE对象,我可以将它们作为byte []进行读取和写入。 但是,我不知道在Word中重新打开这些文档的最佳方法。 现在我正在使用FileStream在某处重新创建文件,然后拍摄System.Diagnostics.Process.Start(filename)以使其打开。 这将在政府计算机上使用,有时可能会有一些时髦的安全规则,所以我不知道这是否是最好的方法。 是否可以打开以前存储为byte []的文件而不使用保存到硬盘驱动器的任何中间文件? 我知道他们至少会拥有Word 2003,所以我愿意使用Word互操作。 谢谢你的任何输入!

在C#中将记录插入Microsoft Access数据库

我使用C#插入数据以访问2000-2003文件格式数据库。 当我有一个包含2个字段的数据库时,查询工作正常,但是当有更多字段时,它不起作用。 我有两个相同的代码,我无法找到问题。 using System.Data.OleDb; // By using this namespace I can connect to the Access Database. namespace WindowsFormsApplication1 { public partial class Form1 : Form { private OleDbConnection myconn; public Form1() { InitializeComponent(); myconn = new OleDbConnection(@”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\leelakrishnan\Desktop\NewManageContacts.mdb”); } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data […]

MS Access互操作 – 数据导入

我正在使用exe来将SQL导出到Access,我们不想使用DTS,因为我们有多个客户端,每个客户端都导出不同的视图,并且设置和维护DTS包的开销太大。 *编辑:这个过程每晚都为许多客户自动化,因此整个过程必须在存储过程中的游标内启动和控制。 这是因为必须按导出的每个项目过滤数据。 我已经尝试了很多方法将数据从SQL中导入Access,最有希望的是使用Access互操作并运行 doCmd.TransferDatabase(Access.AcDataTransferType.acImport… 我遇到了一个问题,我从视图导入,并手动运行导入,似乎视图没有开始足够快地返回数据,因此访问弹出一个MessageBox对话框,说它已超时。 我认为这也发生在互操作中,但因为它是隐藏的,所以方法永远不会返回! 有什么方法可以阻止弹出这个消息,或者增加导入命令的超时时间? 我目前的攻击计划是将视图展平为一个表,然后从该表导入,然后删除展平的表。 很高兴有任何建议如何解决这个问题。 编辑: 关于我在做什么的进一步信息: 我们有多个客户,每个客户都有一个标准的数据模型。 其中一个“模块”是访问导出器(sproc)。 它读取要从参数表导出然后导出的视图。 视图按项目过滤,并为每个项目创建一个访问文件(每个视图都有项目字段) 我们正在运行SQL 2005并且没有快速转向SQL 2005,我们可能会在几个月后跳到2008年。 然后我们有一个模块执行作业,它在每个数据库上执行配置的模块。 在此模块执行中有许多导入/导出/其他作业,并且访问导出器必须能够适合此框架。 所以我需要一个通用的SQL – > Access导出器,可以通过我们的参数框架进行配置。 目前sproc调用我写的exe,我的exe通过interop打开访问,我知道这对服务器不好但是模块执行被写入所以一次只执行一个模块,所以程序永远不会运行更多一次只有一个例子。