อยากทราบว่า นำข้อมูล .txt เข้าฐานข้อมูลSQL2008 ด้วย visual C# อย่างไรค่ะ
ขอบคุณค่ะ mr.win ดูแล้วไม่เข้าใจเลยค่ะ
ขอผู้เชี่ยวชาญช่วยหน่อยน่ะค่ะ เริ่มตรงไหนดี ช่วยหนูคิดโค๊ตหน่อยค่ะ
Date :
2010-10-06 23:03:01
By :
van
คือมันจะต้องเขียน C# อ่าน text file มาก่อนน่ะครับ จากนั่นก็ใช้ function split เพื่อดึงค่าต่าง ๆ ลงใน database ครับ
Date :
2010-10-07 07:16:54
By :
webmaster
อันนี้เป็นตัวอย่าง Code vb น่ะค่ะ
อันดับแรกเลยเราต้องอ่านข้อมูลมาหนึ่งบรรทัดก่อนแล้วค่อยตัดค่ะ
Code (C#)
Dim sr As StreamReader
Dim filename As String = "conn.DAT" 'ชื่อ txt ไฟล์
dim txt as string
If File.Exists(filename) = True Then 'เช็คว่ามีไฟล์อยู่รึป่าว
sr = New StreamReader(filename)
txt = sr.ReadLine()'อ่านข้อมูลมาหนึ่งบรรทัด
จากนั้นเราก็เอา txt มาตัดค่ะ
for each data as string in txt .split(" ")' ตัดเมื่อเจอชอ่งว่าง
จากนั้นเราก็เอาไอ้ตัวแปร data ไปใช้ได้เลยค่ะ
next
sr.Close()
End If
ประมาณนี้น่ะค่ะ
Date :
2010-10-07 09:18:58
By :
poipypunch_9
SSIS ของ SQL SERVER ลองศึกษาดูครับ
Date :
2010-10-07 11:32:32
By :
superpheak
Code (C#)
using PrivateImportExport;
....
....
namespace somenamespace
{
....
....
private void button1_Click(object sender, EventArgs e)
{
this.capResultStr = string.Empty;
string fileLocation = @"D:\BIN\TEST.DATA";
ImportDataFileManager myImporter = new ImportDataFileManager(fileLocation);
myImporter.OnImportData += new OnImportDelegate(this.BeginImportDataItem);
myImporter.ImportNow();
MessageBox.Show(this.capResultStr);
}
string capResultStr = string.Empty;
private void BeginImportDataItem(ImportDataArgs varImportDataItem)
{
//insert data from varImportDataItem into sqlserver here
capResultStr = capResultStr + varImportDataItem.ToString() + "\n";
}
}
//ส่วนข้างล่างนี้จะเก็บใน ไฟล์เดียวหรือจะ new item >> class แล้ว paste ก็ได้ค่ะ
namespace PrivateImportExport
{
public delegate void OnImportDelegate(ImportDataArgs varImportDataItem);
public class ImportDataFileManager
{
public event OnImportDelegate OnImportData;
private string _FileLocation = String.Empty;
public string FileLocation
{
get { return _FileLocation; }
set
{
if (System.IO.File.Exists(value))
_FileLocation = value;
}
}
public ImportDataFileManager(string varFileLocation)
{
this.FileLocation = varFileLocation;
}
public int ImportNow()
{
int totalRecord = 0;
using (System.IO.StreamReader myReader = new System.IO.StreamReader(this.FileLocation))
{
int LineNumber = 0;
while (myReader.Peek() >= 0)
{
string DataLineStr = myReader.ReadLine();
ImportDataArgs myImportDataItem
= new ImportDataArgs(LineNumber++, DataLineStr);
//prevent un-inherit method
if (OnImportData != null)
OnImportData(myImportDataItem);
if(!myImportDataItem.HasError)
totalRecord++;
}
}
return totalRecord;
}
}
public class ImportDataArgs
{
private int _RecordNumber = 0;
private DateTime _DateField;
private double _FieldA = 0;
private double _FieldB = 0;
private double _FieldC = 0;
private bool _HasError = false;
private IFormatProvider thFormatFromCultureInfo
= new System.Globalization.CultureInfo("th-TH", true);
public int RecordNumber
{
get { return _RecordNumber; }
set { _RecordNumber = value; }
}
public DateTime DateField
{
get { return _DateField; }
set { _DateField = value; }
}
public double FieldA
{
get { return _FieldA; }
set { _FieldA = value; }
}
public double FieldB
{
get { return _FieldB; }
set { _FieldB = value; }
}
public double FieldC
{
get { return _FieldC; }
set { _FieldC = value; }
}
public bool HasError
{
get { return _HasError; }
set { /*do nothing*/ }
}
public ImportDataArgs(int varRecordNumber, DateTime varDateField
, double varFieldA, double varFieldB, double varFieldC)
{
this.RecordNumber = varRecordNumber;
this.DateField = varDateField;
this.FieldA = varFieldA;
this.FieldB = varFieldB;
this.FieldC = varFieldC;
}
private double SafeConvertStrToDouble(string varData)
{
double result = 0;
double.TryParse(varData, out result);
return result;
}
private int SafeConvertStrToInt(string varData)
{
int result = 0;
int.TryParse(varData, out result);
return result;
}
public ImportDataArgs(int varLineNo, string varImportDataLine)
{
// with this format
// 2007 08 06 14 37 33 25.180 22.475 62.871
this.RecordNumber = varLineNo;
int myYear = 0, myMonth = 0, myDay = 0;
int myHour = 0, myMinute = 0, mySecond = 0;
double myFieldA = 0, myFieldB = 0, myFieldC = 0;
DateTime myDateField;
try
{
string[] DataStr = varImportDataLine.Split(new char[] { ' ' }
, StringSplitOptions.RemoveEmptyEntries);
myYear = SafeConvertStrToInt(DataStr[0]);
myMonth = SafeConvertStrToInt(DataStr[1]);
myDay = SafeConvertStrToInt(DataStr[2]);
myHour = SafeConvertStrToInt(DataStr[3]);
myMinute = SafeConvertStrToInt(DataStr[4]);
mySecond = SafeConvertStrToInt(DataStr[5]);
myFieldA = SafeConvertStrToDouble(DataStr[6]);
myFieldB = SafeConvertStrToDouble(DataStr[7]);
myFieldC = SafeConvertStrToDouble(DataStr[8]);
this.DateField = new DateTime(myYear, myMonth, myDay
, myHour, myMinute, mySecond);
this.FieldA = myFieldA;
this.FieldB = myFieldB;
this.FieldC = myFieldC;
this.HasError = false;
}
catch
{
this.HasError = true;
}
}
public override string ToString()
{
string tempStr = string.Empty ;
tempStr = string.Format("{0} {1} {2} {3} {4} {5}"
,this.RecordNumber.ToString ("00000")
,this.DateField.ToString("ddd d/MMM/yyyy hh:mm:ss", thFormatFromCultureInfo )
,this.FieldA.ToString ("#,##0.000")
,this.FieldB.ToString ("#,##0.000")
,this.FieldC.ToString ("#,##0.000")
,(this.HasError? "*Error" :string.Empty ));
return tempStr;
}
}
}
ตัวข้อมูลก้อจากของคุณแหละค่ะ
นี่ screen shot ที่มี excel อยู่ข้างหลังเพราะกำลังเขียน excel project อยู่ค่ะใน vss2008 มี project type มาใหม่
คือพวก office project เลยลองๆเขียนดู ซึ่งมันเขียน c# ได้ตามปกติเพียงแต่ this จะกลายเป็น excel object ไป
code นี้ยาวหน่อยเพราะตั้งเขียนไปสอนไปค่ะ พยายามเขียนให้ตัว code อธิบายตัวเอง สงสัยตรงไหนถามค่ะ
ส่วนการ insert ลงฐานข้อมูลให้ เขียนลงไปที่บรรทัด 24-25 แทรก code ลงไปเลย ทำมาให้ครึ่งนึงละ
ที่เหลือไม่น่าจะยากละมังคะ
ประวัติการแก้ไข 2010-10-07 13:03:15 2010-10-07 13:04:26 2010-10-07 13:06:35 2010-10-07 13:12:35 2010-10-07 13:12:39
Date :
2010-10-07 12:59:00
By :
blurEyes
Load balance : Server 05