真心急求!C#程序代码,读取另一台电脑上的txt文件数据
用C#写一个程序,要读取局域网内另一台电脑上的txt文件(可共享)。将文件内的数据读入到本机器的SQL表内。
txt文件内数据举例(共4列):
10 25 33 2013/10/20 21:55:36
9 24 32 2013/10/20 21:55:35
8 23 31 2013/10/20 21:55:34
7 22 30 2013/10/20 21:55:33
小弟非常着急,望大家给予帮助,吐血拿出100分高分了~~ C# 套接字 互联 SQL --------------------编程问答-------------------- 读取局域网电脑(共享访问)的txt文件,根据你的txt数据形式,可以使用StreamReader对象一行一行的读取。同时通过ado.net插入到数据库指定的表当中。
http://www.cnblogs.com/ManMonth/archive/2011/10/11/2206998.html --------------------编程问答-------------------- 用WNetAddConnection2 API建立共享连接
用File.ReadAllLines读取文件 --------------------编程问答-------------------- 这是我用过的代码,方法不一定最好,你参考一下:
public class ConnDb--------------------编程问答-------------------- 我是帮你想成一行一条记录了,如果整个内容就一条记录,就用File.ReadAllLines, --------------------编程问答-------------------- 重新写一个:四列四个字段,四行对吧。
{
SqlConnection conn = null;
//下面是构造函数连接数据库
public ConnDb()
{
if (conn == null)//判断连接是否为空
{
conn = new SqlConnection();
conn.ConnectionString = "Data Source=192.168.1.1;Initial Catalog=data;uid=sa;pwd=sa;";
}
if (conn.State == ConnectionState.Closed)
{
try
{
conn.Open();//打开数据库连接
}
catch (Exception ee)
{
//Response.Write(ee.Message);
MessageBox.Show(ee.Message);
}
finally
{
conn.Close();
}
}
}
//下面这个方法是从数据库中查找数据的方法
public DataSet query(string sql)
{
DataSet ds = new DataSet();//DataSet是表的集合
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds);//将数据填充到DataSet
connClose();//关闭连接
return ds;//返回结果
}
//下面的方法是对数据库进行更新
public int add(string sql)
{
SqlCommand oc = new SqlCommand();
int icount = 0;
oc.CommandText = sql;
oc.CommandType = System.Data.CommandType.Text;
oc.Connection = conn;//设置命令的连接
if (conn.State != ConnectionState.Open)
{
try
{
conn.Open();
icount = (int)oc.ExecuteNonQuery();
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
conn.Dispose();
}
}
return icount;
}
public int seldata(string sql)
{
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.CommandText = sql;
sqlcmd.CommandType = System.Data.CommandType.Text;
sqlcmd.Connection = conn;
int icot = 0;
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlDataReader dr = sqlcmd.ExecuteReader();
dr.Read();
if (dr.HasRows)
{
icot = 1;
}
else
{
icot = 0;
}
conn.Close();
conn.Dispose();
return icot;
}
public void deldata(string sql)
{
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.CommandText = sql;
sqlcmd.CommandType = System.Data.CommandType.Text;
sqlcmd.Connection = conn;//设置命令的连接
int icount = 0;
if (conn.State != ConnectionState.Open)
{
try
{
conn.Open();
icount = (int)sqlcmd.ExecuteNonQuery();
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
public void connClose()
{
if (conn.State == ConnectionState.Open)
{
//判断数据库的连接状态,如果状态是打开的话就将它关闭
conn.Close();
conn.Dispose();
}
}
}
private int add_sql(string sql)
{
int x = new ConnDb().add(sql);//通过ConnDb()对象的update()方法执行sql语句并返回一个影响行数
if (x > 0)
{
// toolStripStatusLabel1.Text = DateTime.Now + " " + "该时次文件入库成功!";
}
else
{
//toolStripStatusLabel1.Text = DateTime.Now + " " + "该时次文件入库失败!";
}
return x;
}
private void button4_Click(object sender, RoutedEventArgs e)
{
try
{
string datapath = @"\\192.168.1.2\data\data.txt";
using (StreamReader sr = new StreamReader(datapath))
{
String line;
while ((line = sr.ReadLine()) != null)
{
string txt = line;
ConnDb cdb = new ConnDb();
string sql1 = string.Format("select * from 表");
int iReturn = cdb.seldata(sql1);
if (iReturn == 0) //数据库里没有数据就入到表里
{
string sql = string.Format("insert into 表(txt) values('{0}')", txt);
listBox2.Items.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 文件已入库!!");
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
你根据你的实际情况,再修改一下,很容易了
public static void insert_data(string s1, string s2, string s3,string s4)--------------------编程问答-------------------- 模拟账户跨服务器上传下载文件
{
string strCon = "Data Source=192.168.1.2;Initial Catalog=test;User ID=sa;Pwd=sa"; //mdb 当然是同一个目录下了
SqlConnection myConn = new SqlConnection(strCon);
string insert_sql = "insert into table_name column_name1,column_name2,column_name3,column_name4) values ('" + s1 + "'" + s2 + "'" + s3 + "'" + s4 + "')";
SqlCommand cmd = new SqlCommand(insert_sql, myConn);
try
{
myConn.Open();
cmd.ExecuteNonQuery();
}
catch
{
}
finally
{
myConn.Close();
}
}
private void button11_Click(object sender, EventArgs e)
{
try
{
string datapath = @"\\192.168.1.2\data\data.txt";
using (StreamReader sr = new StreamReader(datapath))
{
String line;
while ((line = sr.ReadLine()) != null)
{
string txt = line;
string[] s = txt.Split(' ');
insert_data(s[0], s[1], s[2], s[3] + " " + s[4]);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
http://www.yyzq.net/Product?ID=7
希望能给你一些启发 --------------------编程问答-------------------- 有多大问题?
1. 从局域网读取文件?
共享方式或是http、ftp下载
2. 分析txt文件?
按协定的分隔符进行分隔,组织sql,执行,可能需要一个事务
楼主哪不会?就一块一块做,再整合到一起 --------------------编程问答-------------------- 采用ftp技术进行局域网的下载 --------------------编程问答-------------------- 使用远程访问方式获取txt对象,然后用StreamReader一行一行的读取。 --------------------编程问答-------------------- 谢谢大家,我正在测试,分数稍后会给的~ --------------------编程问答-------------------- 都共享了就可以读取啊!
也可以用Socket读取!
补充:.NET技术 , C#