원래는 게시판으로 만들까 하다가 시간이 오래 걸릴것 같아서 메모장 식으로 먼저 만들어 봤다 솔직히 이미 올려진 것과 비교했을때 실버라이트로 페이징 처리 하는것과 바인딩을 처리를 하는것을 추가하고 특별이 더 한것은 없는것 같다.

이미 올려진것과 같은 테이블을 사용하기 때문에 같은 결과물이 나올것이다. 그리고 DB 역시 MySql을 사용하여 Xml로 통신하게 처리하였다.


 

구상을 멋지게 했는데 결과는 이렇게 나왔다 ^^;;; 뭔가 너무 허접하게 나왔다.. 멋진 애니메이션과 화려한 효과를 원했건만.. 그래도 Mysql을 이용한것에 의의를 가져야 겠다.

DB를 이용해서 간단한 메모를 기록할수 있는 프로그램을 만들어 봤다. 일단 DB는 Mysql 을 이용하였다. 공식적으로 실버라이트는 Mysql을 이용하기 위해 어떤한 것도 제공은 해주지 않는다.(아닌가? 내가 못찾은건가?) 그래서 어떻게 하면 Mysql을 이용할수 있을까 하는 생각에서 MSsql 의 쿼리문 중에 for xml auto, elements 라는 쿼리문이 떠올랐다. MSsql에서 쿼리문 제일 마지막에 위의 명령어 문구를 사용하게 되면 테이블의 구조와 필트명에 따라 결과가 xml로 나오게 된다.. Mysql에서도 해당 쿼리문을 사용할수 있다면 어느정도 이용은 가능할수 있을것 같았다. 근데 웬걸 Mysql에서는 저런 쿼리문은 사용되지 않았다.

어째던 그런 명령문은 사용되지 않았기 때문에 php로 db를 읽을때 테이블명, 필드명을 추출해서 XML 출력을 해줄수 있게 만들었다. 결국 php페이지를 읽을때 Sql문을 파라미터 값에다 넘기고 그 결과값을 xml로 받을수 있게 만들었다. 실버라이트에서는 xml을 읽는 것은 쉽기때문에..

이렇게 db를 읽게 하여 Mysql을 이용가능 하게 하였다. DB읽기가 어느정도 되었기때문에 간단한 메모기록 프로그램을 만들어 보았다. 프로그램명은 SilverBoard!!



로딩 될때 가장 최근쓴글 6개가 읽여진다. 어째던 Mysql을 이용하여 만들었다는 것에 의의를 두고 다음번엔 실버라이틀 게시판을 만들어봐야겠다. 물론 Mysql을 이용해서 좀더 에니메이션이 들어간 작품으로.... 썩 만족스럽진 않다.

MySql OleDb 를 사용하여 데이터 베이스에 데이터를 넣는 간단한 프로그램을 작성하였다.

using System;
using System.Data;
using System.Data.OleDb;
public class App
{
public static void Main()
{
string conStr = "Provider=MySQLProv;Data Source=csharp;" +
     "Location=localhost;User Id=root;Password=apmsetup";
string insert = "Insert into Address values(1,'김병수','서울')";
OleDbConnection conn = new OleDbConnection(conStr);
conn.Open();
OleDbCommand insertComm = new OleDbCommand(insert,conn);
insertComm.ExecuteNonQuery();
conn.Close();
}
}



위와 같은 프로그램을 작성 하고, 컴파일을 하였다. 아무 에러 없이 컴파일이 되었고 실행을 시켜 보니 다음과 같은 에러가 발생 했다.

처리되지 않은 예외: System.Data.OleDb.OleDbException: 오류 메시지 없이 'MySQLPro
v'이(가) 실패했습니다(결과 코드: E_FAIL(0x80004005)).
  위치: System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBP
ARAMS dbParams, Object& executeResult)
  위치: System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult
)
  위치: System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior,
Object& executeResult)
  위치: System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior be
havior, String method)
  위치: System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
  위치: App.Main()



일단 에러가 처리 되어서 무슨 에러인지 위의 메세지를 봤을때 잘몰르겠다. ^^;; 심각히 고민해 보다가 쿼리문에 잘못이 있나 하여서 한번 쿼리 문을 직접 sql문에다 실행을 시켜 보았는데 이게 왠걸 입력이 잘된다....

그렇다면 무슨 문제가 있는것이라는 얘기인데 이리 저리 궁리해 보다가 문제점을 찾았다. 소스를 아래와 같이 수정 하였다.

using System;
using System.Data;
using System.Data.OleDb;
public class App
{
public static void Main()
{
 string conStr = "Provider=MySQLProv;Data Source=csharp;" +
     "Location=localhost;User Id=root;Password=apmsetup";
 string insert = "Insert into Address values(1,'KimByoungSoo','Seoul')";
 OleDbConnection conn = new OleDbConnection(conStr);
 conn.Open();
 OleDbCommand insertComm = new OleDbCommand(insert,conn);
 insertComm.ExecuteNonQuery();
 conn.Close();
}
}



위와 같이 입력을 하고 실행을 시켜 보니 아무런 예외 처리가 나오지 않았고 sql을 검색 해보니 잘 들어가 있었다.

mysql> select * from address;
+------+--------------+--------+
| id      | name              | addr   |
+------+--------------+--------+
|    1    | 김삿갓             | 서울시 |
| NULL | NULL              | NULL   |
| NULL | NULL              | NULL   |
| NULL | NULL              | NULL   |
|    1    | 1                    | 1      |
| NULL | NULL              | NULL   |
|    1    | KimByoungSoo | Seoul  |
|    1    | KimByoungSoo | Seoul  |
+------+--------------+--------+
8 rows in set (0.00 sec)



그렇다면 문제점은 한글전송시 문제가 발생한다는 것이다. 음.. 이것을 해결할 방법은..... 찾아 봐야 겠다.

오늘 우연히C#에서 SQL 서버의 자료들을 다루다가
php에서 빈번히 사용하는 MySQL를 다룰수 없을까 생각 해보았다.
그래서 무작정 C#을 이용해 시작해 보았다.
그리고 목표는 OLE DB를 이용!!


using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
//일단 위의 using을 해준다.

public class UsingMySql
{
public static void Main()
{
try
{
DataSet ds = new DataSet();
OleDbDataAdapter odda = new OleDbDataAdapter(
"Select * from member",
"Provider=MySQLProv; location=위치t; user id=아이디; password=비번; data source =데이터 베이스" );
odda.Fill(ds, "테이블이름");
foreach (DataRow row in ds.Tables["테이블이름"].Rows)
Console.WriteLine("{0} {1} {2} {3} {4}",row[0],row[1],row[2],row[3],row[4]); }
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
 


프로그램 메인이다.아무것도 깔지 않을 시에는 에러가 난다.
일단 Provider를 깔아야 한다는걸 알았고 짧은 영어 실력으로
MySQL홈페이지에 들어 갔으니 찾지 못했다 ㅜ.ㅜ
그래서 결국 Provider를 구해 겨우겨우 완성 시켰다.



이 프로그램을 실행 하고 닷넷으로 해볼시 MySQL자료를 불러 들일수 있었다.

div>