在我目前編寫的應用程序中,我處理了很多MySql數據庫。我知道我這樣做的方式是錯誤的,所以你不需要告訴我,但我該如何正確地做到這一點?如同從.NET應用程序處理MySql數據庫的正確做法是什麼。什麼是從.Net應用程序處理MySql數據庫的正確方法
在一分鐘我用一個類,這是下面:
using System;
using MySql.Data.MySqlClient;
namespace WhateverProjectImWorkingOn
{
class MySql
{
public string myConnectionString = String.Format("SERVER={0}; DATABASE={1}; UID={2}; PASSWORD={3}", "8.8.8.8", "foobar", "foo", "barr");
public string Select(string mySqlQuery)
{
MySqlConnection connection = new MySqlConnection(myConnectionString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = mySqlQuery;
connection.Open();
Reader = command.ExecuteReader();
string thisrow = "";
while (Reader.Read())
{
for (int i = 0; i < Reader.FieldCount; i++)
{
thisrow += Reader.GetValue(i).ToString();
}
}
Reader.Close();
connection.Close();
return thisrow;
}
public void Update(string mySqlQuery)
{
MySqlConnection mangoConnection = new MySqlConnection(myConnectionString);
MySqlCommand command = mangoConnection.CreateCommand();
command.CommandText = mySqlQuery;
mangoConnection.Open();
MySqlDataReader reader = command.ExecuteReader();
mangoConnection.Close();
}
}
}
我實例化這個類,然後使用選擇的方法來選擇,像這樣的數據:
MySql mySql = new MySql();
string whateverIWant = mySql.Select("Select `MyValue` From `FooBarr` Where `Foo` = 'Barr'");
我跑更新查詢像這樣:
mySql.Update("UPDATE `tblFooBarr` SET `acme`='Foo' WHERE `tnt`='barr';");
在你開始之前,是的,我爲自己的sl sl sl code的代碼感到非常羞愧,但如果你能幫助我提高,我會非常感激!
謝謝
你應該包裝在using語句您的MySqlConnection類,以確保即使出現錯誤,連接也會關閉。 – Hans 2012-01-15 17:47:19
這似乎是可行的,那麼我的代碼中的原始SQL呢?我的理解是,這只是一個龐大的nono,對連接參數進行硬編碼。 – JMK 2012-01-15 17:49:56
您還應該使用類型安全的MySqlParameter來防止SQL注入代碼。對於SQL注入,請參閱以下鏈接http://msdn.microsoft.com/en-us/library/ff648339.aspx。 – Hans 2012-01-15 18:21:21