PDA

View Full Version : آموزش: ساخت فایل اکسس و قرار دادن امکان دانلود آن در asp.net



ar.mahdian
جمعه 07 مرداد 1390, 12:16 عصر
سلام
برای برخی پروژه ها نیاز میشه که از یه کوری یه فایل اکسس بسازیم و اونو به کاربر بدیم
بعد از کلی کلنجار رفتن موفق شدم و اونو اینجا میزارم تا بقیه دوستان هم استفاده کنند:

ابتدا Microsoft ADO Ext. x.x for DDL and Security رو به پروژه الصاق کنید.(add Reference)
حالا یه کلاس به پروژه اضافه میکنیم و این دو متد رو درونش مینویسیم:

using System;
using ADOX;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data;

class Class1
{
public static void creatDB()
{
ADOX.CatalogClass cat = new ADOX.CatalogClass();
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\AccessDB\\NewMDB.mdb;" +
"Jet OLEDB:Engine Type=5");
cat = null;
GC.Collect();//to release handle of .mdb file
}
public static void createTBL(){

OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\AccessDB\\NewMDB.mdb;");
myConnection.Open();
string strTemp = " job_id Integer, job_desc Text ";
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "CREATE TABLE table1(" + strTemp + ")";
myCommand.ExecuteNonQuery();

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=pubs;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from jobs", con);
DataTable dt = new DataTable();
da.Fill(dt);
OleDbCommand com = new OleDbCommand("insert into table1(job_id,job_desc)values(@job_id,@job_desc)", myConnection);
con.Open();
for (int i = 0; i < dt.Rows.Count; i++)
{
com.Parameters.Clear();
com.Parameters.AddWithValue("@job_id", Convert.ToInt32(dt.Rows[i]["job_id"]));
com.Parameters.AddWithValue("@job_desc", dt.Rows[i]["job_desc"].ToString());
com.ExecuteNonQuery();
}
con.Close();
myCommand.Connection.Close();
}
}

حالا یه دکمه روی صفحه asp قرار داده و این کد رو در رویداد کلیک اون مینویسیم:


protected void Button1_Click(object sender, EventArgs e)
{
string file_path = @"c:\AccessDB\NewMDB.mdb";
if(System.IO.File.Exists(file_path))
System.IO.File.Delete(file_path);
Class1.creatDB();
Class1.createTBL();
string f = @"c:\AccessDB\NewMDB.mdb";
Response.AppendHeader("Content-Disposition", "attachment; filename=NewMDB.mdb");
Response.TransmitFile(file_path);
Response.End();
}

البته برای پروژه واقعی یه فکری برای اسم فایل بکنید.
و اجرا.