我正在尝试使我的应用程序可以与phpmyadmin sql服务器中在线的数据库一起使用。当我启动我的应用程序时,它需要从数据库中获取密码,但是当它尝试打开连接时,整个程序只会冻结,并且会长时间保持这种状态。在我正在使用的每个班级中,我都建立了新的连接,我不知道这是否可能是一个问题。
下面是我正在为此使用的数据库类。
class Database
{
private SqlConnection connection;
private string connectionstring = "Server=studmysql01.fhict.local;Uid=dbi413434;Database=dbi413434;Pwd=Koekjesdeeg;";
private string nfcId;
private int vak;
private int rij;
public Database()
{
connection = new SqlConnection(connectionstring);
}
public string GetPassword(string username)
{
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT password FROM Login WHERE username = '" + username + "'", connection);
string checkPassWord = Convert.ToString(cmd.ExecuteScalar());
connection.Close();
return checkPassWord;
}
public void MakeAccount(string userName, string passWord)
{
connection.Open();
SqlCommand comm = connection.CreateCommand();
comm.CommandText = "INSERT INTO LOGIN (USERNAME, PASSWORD) VALUES (@USERNAME, @PASSWORD)";
comm.Parameters.AddWithValue("@USERNAME", userName);
comm.Parameters.AddWithValue("@PASSWORD", passWord);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("account is not made");
}
connection.Close();
}
public void Change_Info(double rate, int maximum_stay, int row, int line)
{
string command;
connection.Open();
SqlCommand comm = connection.CreateCommand();
if (rate == 0)
{
command = "UPDATE General SET Maximum_Stay=@maximum_stay, Row=@row, Line=@line WHERE ID=1";
}
else if (maximum_stay == 0)
{
command = "UPDATE General SET Rate=@rate, Row=@row, Line=@line WHERE ID=1";
}
else if (row == 0)
{
command = "UPDATE General SET Rate=@rate, Maximum_Stay=@maximum_stay, Line=@line WHERE ID=1";
}
else if (line == 0)
{
command = "UPDATE General SET Rate=@rate, Maximum_Stay=@maximum_stay, Row=@row WHERE ID=1";
}
else
{
command = "UPDATE General SET Rate=@rate, Maximum_Stay=@maximum_stay, Row=@row, Line=@line WHERE ID=1";
}
comm.CommandText = command;
comm.Parameters.AddWithValue("@rate", rate);
comm.Parameters.AddWithValue("@maximum_stay", maximum_stay);
comm.Parameters.AddWithValue("@row", row);
comm.Parameters.AddWithValue("@line", line);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("info is not updated in general");
}
connection.Close();
}
public void CheckForId(int id, int row, int line, bool taken, string target)
{
string queryUpdate = "UPDATE eventlog SET Rij=@row, Vak=@line, Beschikbaarheid=@taken, Parkeerdoel=@target WHERE ID=@id";
string queryInsert = "INSERT INTO eventlog (ID, Rij, Vak, Beschikbaarheid, Parkeerdoel) VALUES (@id, @row, @line, @taken, @target)";
string queryDelete = "DELETE * FROM eventlog WHERE id=@id";
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT id FROM eventlog WHERE ID=@id", connection);
cmd.Parameters.AddWithValue("@id", id);
string data = Convert.ToString(cmd.ExecuteScalar());
SqlCommand comm = connection.CreateCommand();
if (data == "")
{
comm.CommandText = queryInsert;
}
else if (Int32.Parse(data) == id)
{
comm.CommandText = queryUpdate;
}
else
{
comm.CommandText = queryDelete;
}
comm.Parameters.AddWithValue("@row", row);
comm.Parameters.AddWithValue("@line", line);
comm.Parameters.AddWithValue("@taken", taken);
comm.Parameters.AddWithValue("@target", target);
comm.Parameters.AddWithValue("@id", id);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("info is not correctly inserted checkForid");
}
connection.Close();
}
public double GetRate()
{
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT Rate FROM General WHERE ID=1", connection);
double rate = Convert.ToDouble(cmd.ExecuteScalar());
connection.Close();
return rate;
}
public void SetId(int id, string nfcId, string kenteken, int row, int line, DateTime begintTijd)
{
if (row != -1 || line != -1)
{
connection.Open();
SqlCommand comm = connection.CreateCommand();
comm.CommandText = "INSERT INTO INCHECK (Timestamp, NfcId, Kenteken, ParkeerRij, ParkeerVak) VALUES (@Timestamp, @NfcId, @Kenteken, @ParkeerRij, @ParkeerVak)";
comm.Parameters.AddWithValue("@Timestamp", begintTijd);
comm.Parameters.AddWithValue("@NfcId", nfcId);
comm.Parameters.AddWithValue("@Kenteken", kenteken);
comm.Parameters.AddWithValue("@ParkeerRij", row);
comm.Parameters.AddWithValue("@ParkeerVak", line);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("not correctly inserted Setid");
}
connection.Close();
}
}
public void GetVisitorInformation(string kenteken)
{
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT NfcId FROM INCHECK WHERE Kenteken=@kenteken", connection);
SqlCommand cmd2 = new SqlCommand("SELECT ParkeerVak FROM INCHECK WHERE Kenteken=@kenteken", connection);
SqlCommand cmd3 = new SqlCommand("SELECT ParkeerRij FROM INCHECK WHERE Kenteken=@kenteken", connection);
cmd.Parameters.AddWithValue("@kenteken", kenteken);
cmd2.Parameters.AddWithValue("@kenteken", kenteken);
cmd3.Parameters.AddWithValue("@kenteken", kenteken);
nfcId = Convert.ToString(cmd.ExecuteScalar());
vak = Convert.ToInt32(cmd2.ExecuteScalar());
rij = Convert.ToInt32(cmd3.ExecuteScalar());
connection.Close();
}
public void SetCheckOutId(int id, string kenteken, DateTime eindTijd)
{
connection.Open();
SqlCommand comm = connection.CreateCommand();
comm.CommandText = "INSERT INTO UITCHECK (Timestamp, NfcId, Kenteken, ParkeerRij, ParkeerVak) VALUES (@Timestamp, @NfcId, @Kenteken, @ParkeerRij, @ParkeerVak)";
comm.Parameters.AddWithValue("@Timestamp", eindTijd);
comm.Parameters.AddWithValue("@NfcId", nfcId);
comm.Parameters.AddWithValue("@Kenteken", kenteken);
comm.Parameters.AddWithValue("@ParkeerRij", rij);
comm.Parameters.AddWithValue("@ParkeerVak", vak);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("checkoutid is not correctly inserted");
}
connection.Close();
}
public void SetParkingTargets(string target)
{
connection.Open();
SqlCommand comm = connection.CreateCommand();
comm.CommandText = "INSERT INTO ParkingTargets (Targets) VALUES (@Targets)";
comm.Parameters.AddWithValue("@Targets", target);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("parking targets are not set");
}
connection.Close();
}
public void DeleteParkingTarget(string target)
{
string queryDelete = "DELETE FROM ParkingTargets WHERE Targets=@target";
connection.Open();
SqlCommand comm = connection.CreateCommand();
comm.CommandText = queryDelete;
comm.Parameters.AddWithValue("@target", target);
if (comm.ExecuteNonQuery() == 0)
{
throw new ArgumentException("not deleted");
}
connection.Close();
}
public List<string> GetParkingTargets()
{
List<string> targets = new List<string>();
connection.Open();
SqlCommand cmd2 = new SqlCommand("SELECT COUNT(id) FROM ParkingTargets", connection);
int numberOfLines = Convert.ToInt32(cmd2.ExecuteScalar());
for (int i = 1; i <= numberOfLines; i++)
{
SqlCommand cmd = new SqlCommand("SELECT Targets FROM ParkingTargets WHERE ID=@id", connection);
cmd.Parameters.AddWithValue("@id", i);
targets.Add(Convert.ToString(cmd.ExecuteScalar()));
}
connection.Close();
return targets;
}
}