32
Dong Nai University of Technology Hin Tài Là Nguyên Khí Ca Quc Gia PPLT test test CTDL&GT C# F# Java Android UML LT Tiên Tiến Lịch giảng dạy Liên hệ Cách to setup project visual studio vi Sql server By Trần Duy Thanh on November 9, 2012 1 Vote Tạo Solution có chứa 3 Project bên như dưới:

Visual + SQL

Embed Size (px)

Citation preview

Page 2: Visual + SQL

Project QLSVApplication: là ứng dụng dùng để hiển thị thông tin sinh viên, chỉ là 1

Datagridview để hiển thị lên.

Project SetupEngine : là Project loại Libraries, project này chúng ta sẽ thêm loại

Installer đặt tên là InstallerEngine (Class này có nhiệm vụ cài đặt Cơ sở dữ liệu vào

máy tính, với các thông số được truyền vào từ quá trình cài đặt do ta quy định). Ta sẽ

nhúng các SQL Script mà SQLServer cung cấp cho ta vào đây với tên sqldata.txt và

sqldropcreate.txt (nhớ đặt tên viết thường, ta sẽ đi vào chi tiết ở phần sau)

Ta sẽ biên dịch project này thành dll để sử dụng trong Project QLSVSetup.

Project QLSVSetup : Dùng để cài đặt ứng dụng QLSVApplication vào máy tính, và

ra lệnh cho SetupEngine cài đặt cơ sở dữ liệu

Bước 1: Tạo ứng dụng sử dụng

Project QLSVApplication:

Page 3: Visual + SQL

Trong project này đơn giản chỉ là hiển thị thông tin, chuỗi kết nối sẽ được đọc từ

app.config. Chuỗi này sẽ được cấp nhập trong quá trình cài đặt vào máy tính.

Bước 2: Tạo Project để cài đặt CSDL

Project SetupEngine: Project dùng để tạo CSDL, Project này chúng ta nhớ chọn

loại Libraries

Page 4: Visual + SQL

- Để tạo class Installer như trong project: Bấm chuột phải vào Project/ chọn Add

/ New Item . Trong của sổ mới hiện lên chúng ta tìm tới loại Installer Class, đặt tên

class là InstallerEngine

- Đặt tên class InstallerEngine rồi nhấn Add

- Tiếp tục tạo 2 Text File để lưu SQL Script (các Script này được lấy bằng công

cụ SQL Server cho lẹ). Ở đây ta chia làm 2 tập tin SQL Script bởi vì lý do sau: Thao

Page 5: Visual + SQL

tác tạo CSDL cần phải có thời gian chờ để nó kịp update vào SQL Server. Ta cho chờ

1 thời gian sau đó mới tiếp tục chạy các SQL Script về tạo bảng, insert dữ liệu…

- Để tạo Text File: Bấm chuột phải vào Project / Add/ New Item / chọn Text

File và nhập tên

- Trên đây là tạo Text File tên sqldropcreate.txt , chú ý nhớ đặt tên viết thường

toàn bộ.

- Sau khi tạo xong tập tin sqldropcreate.txt, chép đoạn Script tạo CSDL vào đây

(xem hình ):

Page 6: Visual + SQL

–>Các script này có sẵn do SQL Server tự tạo nên ta chỉ cần copy từ đó vào đây (nhớ

bỏ hết các dòng có chữ Go)

- Tiếp theo ta phải cấu hình để 2 Text File này được nhúng vào Resource sau khi

biên dịch.

- Trong Properties: Lần lượt chọn 2 Text File trên và chọn Embedded

Resource trong Build Action

Page 7: Visual + SQL

- Bây giờ chúng ta tiến hành chỉnh sủa class InstallerEngine:

using System;using System.Collections;using System.Collections.Generic;

using System.ComponentModel;

using System.Configuration.Install;

using System.Linq;

using System.IO;

using System.Reflection;

using System.Data.SqlClient;

using System.Xml;

using System.Collections.Specialized;

namespace SetupEngine

{

[RunInstaller(true)]

public partial class InstallerEngine : System.Configuration.Install.Installer

{

private string logFilePath =”";

private string pathApp = “”;

Page 8: Visual + SQL

public InstallerEngine()

{

InitializeComponent();

}

private string GetSql(string Name)

{

try

{

// Gets the current assembly.

Assembly Asm = Assembly.GetExecutingAssembly();

// Resources are named using a fully qualified name.

Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + “.” + Name);

// Reads the contents of the embedded file.

StreamReader reader = new StreamReader(strm);

string sInfor = reader.ReadToEnd();

Log(sInfor);

reader.Close();

Page 9: Visual + SQL

return sInfor;

}

catch (Exception ex)

{

Log(ex.ToString());

throw ex;

}

}

private void ExecuteSql(string serverName, string dbName, string userid, string password, string Sql)

{

string connStr = “server =” + serverName + “;database =” + dbName + “;uid=” + userid + “;pwd=” +

password;

using (SqlConnection conn = new SqlConnection(connStr))

{

try

{

SqlCommand cmd = new SqlCommand(Sql);

conn.Open();

Page 10: Visual + SQL

cmd.Connection = conn;

int n = cmd.ExecuteNonQuery();

Log(” n= ” + n);

conn.Close();

}

catch (Exception ex)

{

Log(ex.ToString());

}

}

}

protected void AddDBTable(string serverName, string userid, string password)

{

try

{

// Creates the database and installs the tables.

string strScript = GetSql(“sqldropcreate.txt”);

Page 11: Visual + SQL

ExecuteSql(serverName, “master”, userid, password, strScript);

System.Threading.Thread.Sleep(60 * 1000);

strScript = GetSql(“sqldata.txt”);

ExecuteSql(serverName, “dbqlsv”, userid, password, strScript);

System.Threading.Thread.Sleep(60 * 1000);

string connStr = “server =” + serverName + “;database =dbqlsv;uid=” + userid + “;pwd=” + password;

Log(“AppPath=” + pathApp);

XmlDocument xmlDom = new XmlDocument();

xmlDom.Load(pathApp);

// Get XML node

XmlNode xmlNode = xmlDom.SelectSingleNode(

“configuration/appSettings/add[@key='MYCONN']“);

xmlNode.Attributes["value"].Value = connStr;

// Updating connection string in file

Log(“Followind node of config file will be updated: ” + xmlNode.InnerXml);

// Save to disk

xmlDom.Save(pathApp);

Page 12: Visual + SQL

}

catch (Exception ex)

{

//Reports any errors and abort.

Log(ex.ToString());

throw ex;

}

}

protected override void OnAfterInstall(IDictionary savedState)

{

base.OnAfterInstall(savedState);

}

public override void Install(System.Collections.IDictionary stateSaver)

{

base.Install(stateSaver);

string assemPath = this.Context.Parameters["assemblypath"];

int pos = assemPath.LastIndexOf(“\\”);

Page 13: Visual + SQL

logFilePath = assemPath .Substring(0,pos+1)+ “\\SetupLog117.txt”;

pathApp = assemPath.Substring(0, pos + 1) + “\\QLSVApplication.exe.config”;

Log(“—-Setup started—-”);

Log(“Server=” + this.Context.Parameters["servername"] + ” ; User Id=” +

this.Context.Parameters["userid"] + ” ; pwd=” + this.Context.Parameters["password"]);

foreach (DictionaryEntry s in this.Context.Parameters)

{

Log(“Parameter : “+s.Key +” ; value =”+s.Value);

}

AddDBTable(this.Context.Parameters["servername"], this.Context.Parameters["userid"],

this.Context.Parameters["password"]);

}

public void Log(string str)

{

StreamWriter Tex;

try

{

Tex = File.AppendText(this.logFilePath);

Page 14: Visual + SQL

Tex.WriteLine(DateTime.Now.ToString() + ” ” + str);

Tex.Close();

}

catch

{ }

}

}

}

Giải thích một số dòng lệnh bên trên:

Hàm GetSql(string Name) : Dùng để đọc 2 Text File Sql Script. Vì 2 tập tin này

chúng ta nhúng vào Assembly nên cơ chế đọc tập tin sẽ là như vậy (xem code).

Lệnh : this.Context.Parameters["assemblypath"]; lấy đúng đường dẫn mà lúc cài đặt

chương trình người sử dụng chọn.

Key assemblypath là có sẵn, phải viết y chang.

this.Context.Parameters["servername"], this.Context.Parameters["userid"],

this.Context.Parameters["password"]

còn servernam, userid, password là do chúng ta quy định, do chúng ta đặt bên Project

Setup, 3 biến này phải đặt y chang như 3 biến mà bên Project Setup ta đã đặt.

Page 15: Visual + SQL

void AddDBTable(string serverName, string userid, string password) có nhiệm vụ xóa

và tạo mới CSDL sau đó tạo các bảng, dữ liệu. sau khi tạo xong thì tự động cập nhập

file App.config cho chương trình (dùng xml).

Bước 3: Tạo Project Setup

Chọn Setup project: đặt tên QLSVSetup rồi bấm OK.

Page 16: Visual + SQL

Bấm chuột phải vào QLSVSetup/ chọn File System:

Tại cửa sổ này ta bấm chuột vào thư mục Application Folder, để có được thông tin

như bên phải của hình ta làm như sau:

Page 17: Visual + SQL

Bấm chuột phải vào Application Folder / Add/ Project Output…

Tiếp tục thêm các tập tin ứng dụng và app.config bên Project QLSVApplication vào

đây:

Bấm chuột phải vào Application Folder / Add/ File:

Page 18: Visual + SQL

Kết quả:

Để tạo Shortcut cho ứng dụng sau khi cài đặt thì ta bấm chuột phải vào

QLSVApplication.exe

Page 19: Visual + SQL

Sau đó cắt vào User’s Desktop hay User’s programs Menu, ta có thể tạo bất kỳ thư

mục nào bên nhánh trái, rồi chép Shortcut vào đó, có thể tạo nhiều shortcut.

Tiếp theo ta cấu hình giao diện cài đặt, bấm chuột vào QLSVSetup, bên trên ta chọn

Icon User Interface Editor:

Màn hình User interface sẽ xuất hiện:

Cửa sổ Add Dialog hiển thị lên:

Page 21: Visual + SQL

Các tên : CUSTOMTEXTA1, CUSTOMTEXTA2, CUSTOMTEXTA3 là do ta đặt để

bên Custom Action có thể tham chiếu lấy giá trị từ màn hình cài đặt. Không dùng

Edit4Property nên to cho Edit4Visible =false

- Tiếp theo, cấu hình Custom Action: Bấm chuột phải vào QLSVSetup/ chọn

View/ chọn Custom Actions

Page 22: Visual + SQL

Tại cửa sổ Custom Actions, Bấm chuột phải vào Install / chọn Add Custom Action…

Chọn Primary ouput from SetupEngine (active) rồi bấm OK.

Page 23: Visual + SQL

Sau đó click chuột vào Primary output, quan sát Properties, Ta cấu hình

CustomActionData như hình:

/servername=[CUSTOMTEXTA1] /userid=[CUSTOMTEXTA2]

/password=[CUSTOMTEXTA3]

Ta viết y chang như trên, chú ý là 3 biến servername, userid, password ta đặt bên này

được sử dụng cho bên SetupEngine :

this.Context.Parameters["servername"], this.Context.Parameters["userid"],

this.Context.Parameters["password"]

Page 24: Visual + SQL

Tức là ở đây ta đặt tên gì thì bên SetupEngine phải lấy đúng tên ta đặt bên này

CUSTOMTEXTA1 , CUSTOMTEXTA2, CUSTOMTEXTA3 là do ta đặt cho các

EditPropertie của Textboxes (A)

Bước 4: biên dịch và cài đặt

- Cấu hình QLSVSetup như bên dưới

Chọn Rebuild để biên dịch Setup.

Sau đó chọn Install để cài đặt:

Page 25: Visual + SQL

Các bước cài đặt:

1. BẤM next, tự động xuất hiện màn hình cấu hình CSDL (chính là Textboxes (A))

2. Nhập thông tin và bấm Next:

Page 26: Visual + SQL

3. Chọn đường dẫn cài đặt và bấm Next … cứ

vậy là xong. Chương trình sẽ cài đặt ứng dụng đồng thời cài đặt SQL luôn (có cập

nhật kết nối cho ta luôn)

Kết quả quan sát màn hình Desktop và khởi động chương trình:

Page 27: Visual + SQL

Tải tập tin hướng dẫn chi tiết tại đây :

Tải source code tại đây: http://www.mediafire.com/download.php?v

Chúc các bạn thành công

Like this:

Posted in: C#2

Post navigation

← Older Newer →

One Response

1.

project server fpt April 26, 2013 at 4:13 am

wow, server đẹp đấy

Leave a Reply

Tìm kiếm thông tin

ớng dẫn chi tiết tại đây : http://www.mediafire.com/view/?n3qjzbvthnt9q3n

http://www.mediafire.com/download.php?vzqfjsaiqk5n8sg

Post navigation

April 26, 2013 at 4:13 am | Reply

http://www.mediafire.com/view/?n3qjzbvthnt9q3n

zqfjsaiqk5n8sg

Page 28: Visual + SQL

Search

Lời ngỏ

Để chia sẻ các vấn đề về học tập các bạn sinh viên có thể gửi email tớ[email protected] hoặc gọi số0987773061 hoặc comment trực tiếp vào bài viết. Để thể hiện mình là một Sinh viên thực thụ, các bạn phải ý thức được những lời văn của mình khi viết ra.

Danh sách các chuyên mục

.Net Remoting C# (4)

C#2 (5)

CodeSmith Generator (1)

Custom Component (1)

F# (2)

Java2 (1)

Kiến Trúc Máy Tính (1)

Lập trình Android (40)

1. Giới thiệu môi trường phát triển điện thoại di động (6)

2. Xử lý giao diện người dùng (17)

3. Thực hành về Intent (3)

4. Đa ngôn ngữ trong Android (1)

5. Xử lý tập tin trong Android (6)

6. Xử lý đa tiến trình trong Android (6)

7. Broadcast Receiver (1)

Lập Trình Java 1 (21)

Lập Trình Java 2 (2)

LINQ (Language Integrated Query) (4)

Thông báo chung (91)

Thiết kế giao diện với DotNetBar (1)

Uncategorized (6)

WPF (1)

Recent Posts

Bài 40: Tìm hiểu Broadcast Receiver, ứng dụng viết phần mềm xử lý tin nhắn rác

Bài 39: Kết hợp AsyncTask và Handler class

Page 29: Visual + SQL

Bài 38: Lấy kết quả trả về sau khi thực hiện đa tiến trình bằng AsyncTask

Bài 37: Xử lý đa tiến trình bằng AsyncTask

Bài 36: Update ListView At runtime by Handler class using post

Bài 35 : Vẽ Button lúc Runtime, dùng Using Message của Handler class

Bài tập 34: đa tiến trình trong Android (Multi-Threading)

Bài tập 33: Sử dụng ContentProvider trong Android

Bài tập 32: Tiếp tục củng cố kiến thức SQLite, ví dụ tổng hợp quản lý sách

Bài tập 31: Cách sử dụng SQLite trong Android

Bài tập 30: Thực hành về Shared Preferences

Bài tập 29: XML Parser trong Android

Bài tập 28: Xử lý tập tin trong Android

Bài tập 27: Đa ngôn ngữ trong Android

Bài tập 26: Dùng Implicit Intent để viết chương trình gọi điện thoại và nhắn tin SMS

Bài tập 25: Tiếp tục củng cố kiến thức Intent, ví dụ tổng hợp Quản Lý Nhân Viên

Bài tập 24: Thực hành về Intent trong Android

Bài tập 23: Thực hành về Context Menu trong Android

Bài tập 22: Thực hành về Menu trong Android

Bài tập 21: Thực hành về Tab Selector trong Android

Bài tập 20: Thực hành về DatePickerDialog và TimePickerDialog trong Android

Bài tập 19: Thực hành Gridview trong Android

Bài tập 18: Cập nhật DataSource cho AutocompleteTextView lúc Runtime

Bài tập 17: Thực hành về AutocompleteTextView và MultiAutocompleteTextView

Bài tập 16: Kết hợp Spinner với ListView trong Android

Bài tập 15: Thực hành về Spinner trong Android

Bài tập 14: Thực hành về Custom Layout cho ListView trong Android

Bài tập 13: Thực hành về ListView trong Android

Bài tập 12: Ví dụ tổng hợp TextView, EditText, CheckBox, Button và ImageButton

trong Android

Bài tập 11: Sử dụng Checkbox và RadioButton trong Android

Bài tập 10: Sử dụng TextView, EditText và Button trong Android

Bài tập 9: Thực hành về Toast Notification và Alert Dialog

Bài tập 8: Các kiểu lập trình sự kiện trong Android

Bài tập 7: Làm quen với các Layout trong Android

Bài tập 6: Phân biệt Foreground Lifetime và Visible Lifetime

Bài tập 5: Tìm hiểu vòng đời của một Ứng Dụng Android

Bài tập 4: Cách sửa một số lỗi thường gặp trong Android Project

Page 30: Visual + SQL

Bài tập 3: Cách tạo Android Project v

Bài tập 2: Thao tác với Android Virtual Device v

Bài tập 1: Làm quen với môi trư

Thông báo lịch học bù Tablet

Thông báo tạm nghỉ học lớp Tablet

Điểm bổ sung CTDL

Thông báo dành cho lớp DHTH7CLT học

Kết quả thi giữa học kỳ 2 năm 2012

Thông báo việc làm tại công ty

Lịch thi giữa kỳ

CDTH10ALT – Danh sách sinh viên đăng k

Thông báo chuyển Blog

Lớp CDTH10ALT Điểm thi cuối kỳ

Thông báo của khoa CNTT

Thông báo: mời SV tham dự cuộc thi ImageCup

Cuộc thi Imagine Cup đã chính th

thời gian Imagine Cup 2014: Vòng thi S

1/11/2013 1/2/2014 Vòng bán k

trong nước Bảo vệ ý Continue reading → […]

Thông báo nghỉ học sáng chủ nhật ng

A.314)

Để phục vụ thi tiếng Anh TOEIC, Phòng

đào tạo có lớp học tại các phòng thu

27/10/2013 được nghỉ học vào sáng ch

Continue reading →

v/v:Đăng ký học anh văn A1, A2

Khoa Ngoại ngữ đã tổ chức xong kỳ thi xếp lớp v

mạng. Nếu SV không đăng ký học Tiếng Anh

A2 (của HK2), nếu không học Tiếng Anh A2 th

reading →

ập 3: Cách tạo Android Project và tìm hiểu cấu trúc bên trong của một Android

ập 2: Thao tác với Android Virtual Device và DDMS

ường phát triển điện thoại di động

Tablet

ớp DHTH7CLT học Android

2012-2013

GreenSun

Danh sách sinh viên đăng ký Assembla

ớp CDTH10ALT Điểm thi cuối kỳ Java2

a khoa CNTT

ời SV tham dự cuộc thi ImageCup

ã chính thức bắt đầu tại Việt Nam từ ngày 1/11/2013,

òng thi Sản phẩm Bắt đầu Kết thúc Vòng loại

1/11/2013 1/2/2014 Vòng bán kết Bộ sản phẩm hoàn thiện 5/3/2014 12/3/2014 Chung kết

ớc Bảo vệ ý Continue reading → […]

ỉ học sáng chủ nhật ngày 27/10/2013 tại các phòng thuộc khu A (A.101

TOEIC, Phòng Đào tạo thông báo đến các sinh viên và các đơn v

òng thuộc khu A (A.101 – A.314) vào sáng chủ nhật, ng

ào sáng chủ nhật, ngày 27/10/2013 Các lớp có kế hoạch học v

ọc anh văn A1, A2

ổ chức xong kỳ thi xếp lớp vào ngày 20/10/2013 và đã công b

ạng. Nếu SV không đăng ký học Tiếng Anh A1 (của HK1) sẽ không được học Tiếng Anh

ủa HK2), nếu không học Tiếng Anh A2 thì sẽ không được học Tiếng Anh 1 Continue

ủa một Android Project

ày 1/11/2013, với các mốc

Đề án ý tưởng

ện 5/3/2014 12/3/2014 Chung kết

ộc khu A (A.101 –

ên và các đơn vị

ủ nhật, ngày

ớp có kế hoạch học và

ã công bố điểm lên

ợc học Tiếng Anh

ợc học Tiếng Anh 1 Continue

Page 31: Visual + SQL

Cao đẳng 2010: đăng ký dự Lễ tốt nghiệp tổ chức vào ngày 16/11/2013

Các sinh viên bậc Cao đẳng Khóa 2010 của Khoa CNTT nhanh chóng đăng ký dự Lễ tốt

nghiệp tổ chức vào ngày 16/11/2013. Thời gian tổ chức lễ: lúc 08h00 ngày 16/11/2013 Địa

điểm: Trung tâm liên hợp Thể dục Thể thao (E) Các sinh viên dự lễ tốt nghiệp sẽ nhận áo lễ

Continue reading →

Thông báo về thời gian bảo vệ khoá luận tốt nghiệp CDTH7ALT

Khoa CNTT thông báo về lịch bảo vệ Khoá luận tốt nghiệp CDTH7ALT, chi tiết xem file

Danh sach khoa luan tot nghiep CDTH7ALT

Thông báo về việc cấp phát email uni.dntu.edu.vn cho sinh viên khoa CNTT

Từ ngày 19/10/2013, Khoa CNTT đã cấp cho mỗi sinh viên khoa CNTT một email dưới tên

miền @uni.dntu.edu.vn. Giáo viên giảng dạy lớp sẽ thông báo email và password cho lớp

trưởng, các SV trong lớp nhận tài khoản email qua lớp trưởng. Sau khi đăng nhập email lần

đầu tiên, tất cả SV Continue reading → […]

Thông báo về việc nghỉ học phòng IT ngày 20/10

Ngày 20/10, Khoa NN tổ chức thi Toiec sẽ sử dụng phòng máy IT nguyên ngày, Khoa CNTT

thông báo đến tất cả các lớp có giờ thực hành tại Phòng IT được nghỉ học. Riêng lớp

12DTH2LT4 có lịch thi vẫn thi bình thường từ tiết 7-8. Chi tiết thông báo xem tại đây

Continue reading →

Thông báo về đăng ký dự Lễ tốt nghiệp năm 2013 (Cao đẳng Khóa 2010)

Kế hoạch tổ chức Lễ Tốt nghiệp năm 2013 cho Sinh viên bậc Cao đẳng khóa 2010 và Trung

cấp khóa 2011 của Trường Đại học Công nghệ Đồng Nai: Thời gian tổ chức lễ: lúc 08h00

ngày 16/11/2013. Sinh viên đăng ký dự lễ tốt nghiệp từ ngày 16/10/2013 đến ngày

12/11/2013 tại Phòng Kế hoạch Continue reading → […]

Thông báo về việc hiệu chỉnh quy định sử dụng đồng phục của sinh viên nữ khoa CNTT

Khoa CNTT thông báo về việc thay đổi quy định đồng phục áp dụng cho sinh viên nữ Khoa

CNTT như sau: Kể từ ngày 17/10/2013, sinh viên nữ khoa CNTT không cần mặc áo dài theo

quy định cũ (áo sơ mi trắng, đeo thẻ dây xanh). Chú ý: Đồng phục thể thao, đồng phục

Continue reading →

Page 32: Visual + SQL

Chọn 10 sinh viên ngành CNTT tham gia chương trình MSP

Khoa CNTT sẽ chọn 10 sinh viên ngành CNTT tham gia chương trình MSP (xem chi tiết ở

http://www.microsoft.com/vietnam/student/introduction.aspx). Hãng Microsoft sẽ test lại vào

ngày hội thảo Microsoft 24/10/2013 tại DNTU. Yêu cầu: chỉ cần các bạn ý thích công nghệ

của Microsoft, co tư duy lập trình, thích làm công việc thuyết giảng và quảng Continue

reading […]

Blog Stats

411,634 hits

Blog at WordPress.com. The Retro-Fitted Theme.

Follow

Follow “Dong Nai University of Technology”

Get every new post delivered to your Inbox.

Join 153 other followers

Sign me up

Powered by WordPress.com