出于某种原因,我不能使用我的 MySQL-DB,所以我切换到了 Access DB。
我想要一些小函数来执行简单的查询,如 SELECT、UPDATE 和 INSERT。
我遵循了这个小代码:
using System.Data.OleDb;
using System.Windows.Forms;
using System.Data;
class Csharp_Access
{
public void Csharp_Access_Datenbank()
{
OleDbConnection con = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\data.mdb");
con.Open();
string strSQL = "SELECT * FROM Tabelle1";
OleDbCommand cmd = new OleDbCommand(strSQL, con);
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
MessageBox.Show(dr[0].ToString());
}
dr.Close();
con.Close();
}
}
当我只是复制并粘贴它时,此代码可以完美运行。所以我决定把代码改成“dbFunctions.cs”:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Xml.Serialization;
namespace AquadoServerTool
{
class dbFunctions
{
/// <summary>
/// Funktion, um eine Abfrage auszuführen
/// </summary>
/// <param name="QueryStr">SQL-String</param>
/// <returns></returns>
public static OleDbDataReader QueryString(string QueryStr)
{
// string strAccessSelect = "SELECT * FROM seriennummer";
// Verbindung zur Datenbank aufbauen
OleDbConnection con = null;
try
{
con = new OleDbConnection(GlobalVar.strAccessConn);
con.Open();
}
catch (Exception)
{
return null;
}
OleDbCommand cmd = new OleDbCommand(QueryStr, con);
OleDbDataReader dr = cmd.ExecuteReader();
// while (dr.Read())
// {
// MessageBox.Show(dr[0].ToString());
// }
con.Close();
return dr;
}
}
}
为了测试,如果可行,我做了一个小按钮:
private void button1_Click(object sender, EventArgs e)
{
OleDbDataReader dr = dbFunctions.QueryString("SELECT * FROM seriennummer;");
while (dr.Read())
{
MessageBox.Show(dr[1].ToString());
}
dr.Close();
}
是的,现在点击那个按钮来遗忘!但我收到错误,Read() 不起作用,因为它已经关闭。
我的代码是完全错误的还是我忘记了什么?
问候,巨魔