Love?
Quảng cáo
Thứ Ba, 16 tháng 8, 2011
Ngày đặc biệt :D
Mọi ngưởi cũng hòa đổng và vui vẻ :D! Mình vừa đặt chân tới nơi mọi người đã rủ đi đá bóng :D! Trời mưa to mà vẫn đi đá bóng :D! ngày đầu mà đã có pha nhớ đời :D!
Mai là ngày đầu tiên làm việc của mình! Mong là mọi thứ suôn sẻ :D
Thứ Tư, 10 tháng 8, 2011
Phiêu cùng DJ Bl3nd
Giờ khi làm việc nghe nhạc của DJ Bl3nd mới tập trung cao độ làm việc được :D
Playlist của mình này :D
http://www.youtube.com/watch?v=2tUIroVAmLk&feature=BFa&list=PL427BF54BCE81270A&index=5
Thứ Bảy, 30 tháng 7, 2011
Dùng Jquery gọi hàm C#
Trước tiên bạn cần Download thư viện của jquery tại đây hoặc có thể download Video của bài hướng dẫn này ở cuối bài viết.
Viết code Javascript như sau:
Bạn cần một thẻ div và một nút button để hiển thị dữ liệu:
Trong file Default.aspx.cs bạn viết như sau:
Khi click vào button GetData thì dữ liệu sẽ được bind vào thẻ div
Bạn có thể download Video của bài viết tại đây
Chúc bạn thành công
Chủ Nhật, 17 tháng 7, 2011
Cắt chuỗi thành mảng (Split) trong J2ME
Ta đành mày mò và làm vậy :D!
private String[] split(String original,String separator) {
Vector nodes = new Vector();
//String separator = ":";
//System.out.println("split start...................");
// Parse nodes into vector
int index = original.indexOf(separator);
while(index>=0) {
nodes.addElement(original.substring(0, index));
original = original.substring(index+separator.length());
index = original.indexOf(separator);
}
// Get the last node
nodes.addElement(original);
// Create splitted string array
String[] result = new String[nodes.size()];
if( nodes.size()>0 ) {
for(int loop=0; loop{
result[loop] = (String)nodes.elementAt(loop);
//System.out.println(result[loop]);
}
}
return result;
}
Thứ Hai, 20 tháng 6, 2011
Thứ Hai, 6 tháng 6, 2011
Save and Retrieve Files from SQL Server Database using ASP.Net
Lưu tập tin trong csdl dữ liệu có nhiều mặt lợi như dễ dàng backup và quản lý
Ở đây tôi sẽ giải thích làm thế nào để lưu và lấy các tập tin từ cơ sở dữ liệu.
Thiết kế cơ sở dữ liệu:
Ở đây tôi đã tạo ra Cơ sở dữ liệu và nó có một bảng tblFiles.
Nó có 4 Fields. Các mô tả đầy đủ hiện có sẵn trong hình dưới đây
Như bạn thấy ở trên cho trường id Tôi đã đặt Identity là yes, để nó tự động gia tăng của chính nó.
Field | Liên quan |
|---|---|
id | Số Nhận Dạng |
Name | File Name |
ContentType | Loại nội dung cho tập tin |
Data | Tập tin được lưu trữ như là dữ liệu nhị phân |
Content Type
Tùy thuộc vào loại tập tin dưới đây là các loại nội dung
File Type | Loại nội dung |
|---|---|
Word Document | ứng dụng / vnd.ms-word |
Excel Document | ứng dụng / vnd.ms-excel |
Hình ảnh JPEG | image / jpeg |
Portable Document Format | application / pdf |
Trong mã nguồn kèm theo, tôi đã thêm các tập tin cơ sở dữ liệu. Bạn sẽ cần phải gắn nó vào SQL Server của bạn.
Connection String
Dưới đây là chuỗi kết nối cơ sở dữ liệu. Bạn có thể sửa đổi nó để phù hợp với bạn
Đọc tin
Các tập tin sẽ được đọc vào một Stream Tập tin và sau đó là Stream Tập tin sẽ được chuyển đổi thành mảng byte bằng cách sử dụng BinaryReader để lưu vào bảng cơ sở dữ liệu.
// Read the file and convert it to Byte Array
string filePath = Server.MapPath("APP_DATA/TestDoc.docx");
string filename = Path.GetFileName(filePath);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
br.Close();
fs.Close();
Lưu tin vào cơ sở dữ liệu
Một khi các tập tin được chuyển đổi thành Byte Array nó sẽ được đưa vào cơ sở dữ liệu. Tên tập tin, nội dung File Type và các dữ liệu nhị phân mà giống như các tập tin được lưu trữ trong cơ sở dữ liệu.
Hình dưới đây cho thấy các dữ liệu được lưu trữ trong bảng.
//insert the file into database
string strQuery = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename;
cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = "application/vnd.ms-word";
cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
InsertUpdateData(cmd);
Và các chức năng InsertUpdateData chấp nhận đối tượng SqlCommand, thực thi các truy vấn và chèn dữ liệu vào cơ sở dữ liệu.
private Boolean InsertUpdateData(SqlCommand cmd)
{
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
cmd.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
Response.Write(ex.Message);
return false;
}
finally
{
con.Close();
con.Dispose();
}
}
Lấy tập tin từ cơ sở dữ liệu
Để lấy lại các tập tin từ cơ sở dữ liệu, một truy vấn lựa chọn được thực thi và các ID của các tập tin được truyền như tham số.
Các đối tượng lệnh được chuẩn bị và được truyền cho GetData trả về DataTable trong đó có các tập tin dữ liệu mong muốn.
Sau đó DataTable được thông qua với chức năng tải về mà bắt đầu việc tải xuống tập tin.
string strQuery = "select Name, ContentType, Data from tblFiles where id=@id";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;
DataTable dt = GetData(cmd);
if (dt != null)
{
download(dt);
}
Dưới đây là mã cho chức năng GetData. Nó là một chức năng đơn giản mà thực thi các truy vấn lựa chọn.
private DataTable GetData(SqlCommand cmd)
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
catch
{
return null;
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
}
Tải tập tin về
H trước là chức năng mà khởi đầu việc tải xuống tập tin. Về cơ bản nó đọc nội dung tập tin vào một mảng byte và cũng được tên file và nội dung Type. Sau đó, nó ghi các byte phải sự phản ứng bằng cách sử dụng Response.BinaryWrite
private void tải (DataTable dt)
{
Byte [] bytes = (byte []) dt.Rows [0] ["Data"];
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability (HttpCacheability NoCache.);
Response.ContentType = dt.Rows[0]["ContentType"].ToString();
Response.AddHeader("content-disposition", "attachment;filename="+ dt.Rows[0]["Name"].ToString());
Response.BinaryWrite (byte);
Response.Flush ();
Response.End ();
}
Bạn có thể tải về mã nguồn hoàn chỉnh ở đây.
Download Here
Chủ Nhật, 5 tháng 6, 2011
Vào đời :D
Nhanh nào :D Bay sớm và hạ cánh sớm nào :P
Chủ Nhật, 29 tháng 5, 2011
Này thì nhảy múa này :D!
Chống chỉ định mọi người đú theo :P Về việt nam là bị bộ văn hóa phạt ngay đó :D
Bà già nhay nobody này :D
Thứ Sáu, 27 tháng 5, 2011
27.05.2011
Chủ Nhật, 22 tháng 5, 2011
Come back :D!
Tiếp nối các dự án ko đâu vào đâu :D
Từ dự án Hui-project đến Project-In.NET rồi bây giờ cái dự án TichLuy.NET mới gọi là tạm được :D!
:D Nhiều dự án mới ấp ủ :D! Nhiều điều muốn làm :D! Và nhiều thứ còn dang dở Cố gắng nào :D
Chủ Nhật, 23 tháng 1, 2011
Sử dụng sorting / paging trong GridView khi không dùng DataSourceControl
Nếu bạn chọn AllowPaging="true" hoặc AllowSorting="true" trong control GridView mà không dùng DataSourceControl (Ví dụ: SqlDataSource, ObjectDataSource) thì khi bạn chạy sẽ xuất hiện lỗi sau:
Khi chuyển trang trong control GridView control:
The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.
Khi click vào cột để sắp xếp
The GridView 'GridViewID' fired event Sorting which wasn't handled.
Lỗi này do không thể thiết lập thuộc tính DataSourceID của GridView vì thế bạn phải thêm sự kiện để sắp xếp và phân trang (sorting and paging)
<asp:GridView ID="gridView" OnPageIndexChanging="gridView_PageIndexChanging" OnSorting="gridView_Sorting" runat="server" />
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
return newSortDirection;
}
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridView.PageIndex = e.NewPageIndex;
gridView.DataBind();
}
protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = gridView.DataSource as DataTable;
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
gridView.DataSource = dataView;
gridView.DataBind();
}
}
Thứ Năm, 20 tháng 1, 2011
Tùy bút 20/01
Hôm nay sinh nhật lão Thao đây! Trưa nay lại nhậu tiếp ở nhà lão Bằng :D!
Dự án Project-In.NET đang trong giai đoạn phát triển :D! Mặc dù nó hơi lung tung nhưng ít ra nó cũng đang là dự án hoành tránh nhất từ trước tới giờ của mình! Xong 60% Admin Control rồi, :D! Các Fan thì đang mong chờ tết sẽ ra bản chính thức :D! Chắc là không kịp :d Nhưng chắc là lúc trường bắt đầu đi học thì chắc tạm ổn :D!
Thứ Tư, 19 tháng 1, 2011
Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed
"Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed"
:D Hì hục 1 hồi tìm cách giải quyết cuối cùng thì cũng OK :D
Bước 1: Mở SQL Server Configuration Manager.
"Start > Microsoft SQL Server 2008> Configuration Tools > SQL Server Configuration Manager"
Bước 2: Thay đổi thuộc tính Log as on của SQL Server (SQLEXPRESS) thành LocalSystem bằng cách nháy chuột phải chọn properties
Bước 3: Do mình dùng Windows 7 nên xóa thư mục này
"C:\Users\[user]\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS"
Còn nếu bạn dùng Windows XP thì xóa thư mục sau:
"C:\Documents and Settings\[user]\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS"