111,120
社区成员
发帖
与我相关
我的任务
分享

using System;
using System.Data.OleDb;
using System.Data;
using System.Data.SQLite;
namespace WindowsFormsApp1
{
class Class1
{
//从mysql数据库获取数据
public DataTable getDataTable(string sql)
{
string connstring = ""; //mysql数据库的连接字符串
OleDbConnection conn = new OleDbConnection(connstring);
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
//将数据写入sqlite
public void insertData(DataTable dt)
{
string connstring = ""; //sqlite数据库的连接字符串
//这里假设你的sqlite数据库跟mysql数据库结构一样
string sql = "insert into tablename(";
for(int i=0; i<dt.Columns.Count;i++)
{
sql += dt.Columns[i].ColumnName;
if (i != dt.Columns.Count - 1)
{ sql += ","; }
}
sql += ") values(";
for (int i = 0; i < dt.Columns.Count; i++)
{
sql += "@V"+i;
if (i != dt.Columns.Count - 1)
{ sql += ","; }
}
sql += ")";
//以上是为了拼接sql命令,你知道表结构的情况下直接写就好了,不用这么麻烦,注意使用参数化的命令
SQLiteConnection conn = new SQLiteConnection(connstring);
SQLiteTransaction trans=null;
try
{
conn.Open();
trans = conn.BeginTransaction();//使用事务
for(int i=0;i<dt.Rows.Count;i++)
{
SQLiteCommand cmd = new SQLiteCommand(sql, conn);
for(int j=0;j<dt.Columns.Count;j++)
{
cmd.Parameters.AddWithValue("@" + j, dt.Rows[i][j]);//为sql参数赋值
}
cmd.ExecuteNonQuery();
}
trans.Commit();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
trans.Rollback();
}
finally
{
if (conn.State != ConnectionState.Closed)
conn.Close();
}
}
}
}
代码未经测试,出错了的话贴上来。
还有一个导出EXCEL的就不写了,无非也就是从sqlite检索得到datatable,然后把datatable写入到excel,也就类似上面两个函数了。你可以把EXCEL当成一个数据库用OLEDB去读写。
教一个什么都不会的人,显然直接点好。
教一个什么都不会的人,显然直接点好。[/quote]
谢谢您的答复!
您的答复对我也是直达要害啊,对目前做的项目确实是七窍通了六窍,如果说真的要有点基础的,只能说对C#语言有所了解,但.NET真心不知道了!来到公司才开始接触的,发现和之前学的完全对不上号,只能是重新开始从基础学起!
所以各路大神,最好的解答就是直接点!