なぜか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() が機能しないというエラーが表示されます。
私のコードは単に間違っているのでしょうか、それとも何かを忘れてしまったのでしょうか?
こんにちは、トロルワット