在我目前编写的应用程序中,我处理了很多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