自定义datatable怎么mysqldataadapter批量写入数据库

自定义datatable怎么mysqldataadapter批量写入数据库,第1张

//1 Function to create csv file from DataTable (you can skip this, if you already have csv file)

public static void CreateCSVfile(DataTable dtable, string strFilePath)

{

StreamWriter sw = new StreamWriter(strFilePath, false);

int icolcount = dtableColumnsCount;

foreach (DataRow drow in dtableRows)

{

for (int i = 0; i < icolcount; i++)

{

if (!ConvertIsDBNull(drow[i]))

{

swWrite(drow[i]ToString());

}

if (i < icolcount - 1)

{

swWrite(",");

}

}

swWrite(swNewLine);

}

swClose();

swDispose();

}

//2 Import data into MySQL database

private void ImportMySQL()

{

DataTable orderDetail = new DataTable("ItemDetail");

DataColumn c = new DataColumn(); // always

orderDetailColumnsAdd(new DataColumn("ID", TypeGetType("SystemInt32")));

orderDetailColumnsAdd(new DataColumn("value", TypeGetType("SystemInt32")));

orderDetailColumnsAdd(new DataColumn("length", TypeGetType("SystemInt32")));

orderDetailColumnsAdd(new DataColumn("breadth", TypeGetType("SystemInt32")));

orderDetailColumnsAdd(new DataColumn("total", TypeGetType("SystemDecimal")));

orderDetailColumns["total"]Expression = "value/(lengthbreadth)"; //Adding dummy entries

DataRow dr = orderDetailNewRow();

dr["ID"] = 1;

dr["value"] = 50;

dr["length"] = 5;

dr["breadth"] = 8;

orderDetailRowsAdd(dr);

dr = orderDetailNewRow();

dr["ID"] = 2;

dr["value"] = 60;

dr["length"] = 15;

dr["breadth"] = 18;

orderDetailRowsAdd(dr); //Adding dummy entries

string connectMySQL = "Server=localhost;Database=test;Uid=username;Pwd=password;";

string strFile = "/TempFolder/MySQL" + DateTimeNowTicksToString() + "csv"; //Create directory if not exist Make sure directory has required rights

if (!DirectoryExists(ServerMapPath("~/TempFolder/")))

DirectoryCreateDirectory(ServerMapPath("~/TempFolder/")); //If file does not exist then create it and right data into it

if (!FileExists(ServerMapPath(strFile)))

{

FileStream fs = new FileStream(ServerMapPath(strFile), FileModeCreate, FileAccessWrite);

fsClose();

fsDispose();

}

//Generate csv file from where data read

CreateCSVfile(orderDetail, ServerMapPath(strFile));

using (MySqlConnection cn1 = new MySqlConnection(connectMySQL))

{

cn1Open();

MySqlBulkLoader bcp1 = new MySqlBulkLoader(cn1);

bcp1TableName = "productorder"; //Create ProductOrder table into MYSQL database

bcp1FieldTerminator = ",";

bcp1LineTerminator = "\r\n";

bcp1FileName = ServerMapPath(strFile);

bcp1NumberOfLinesToSkip = 0;

bcp1Load(); //Once data write into db then delete file

try

{

FileDelete(ServerMapPath(strFile));

}

catch (Exception ex)

{

string str = exMessage;

}

}

}

当然有关系了,数据类型必须和数据库定义一样,其实这个不困难的

你在这里

stmtexecuteUpdate(sql);

打个断点,然后把SQL的值拷贝出来,放到数据库里直接运行一下,什么时候拷贝出来的SQL直接运行没问题了,那么程序也就没问题了。

这么直接往里插,是不对的,字符串类型的字段要加单引号,数值字段类型可以不加引号

但是从TABLE出来的字符串都是STRING,你需要自己转换成数值型变量

就是用getValueAt(intr,intc)啊!用户一旦修改了表的数据,你在监听器里,得到那个table的对象,就可以之间用这个getValueAt方法的如果还是修改之前的,可能有几个可能:1那条数据并没有真正的修改到了table中,这种情况也是最常见的错误解决方法:修改数据不能用简单的setValueAt()方法,而是应该对tablemodel里面的数据做修改,然后setModel(Model),这样传回去的table才是真正已经修改过数据的table,否则就不是,这也是大家都用的方法2自己的监听器写错了,可能在监听器里部分代码有问题其他,应该没有问题了,你看下吧,估计是你的table数据没有真正的插入到table中,不是真正的修改数据,也就是说,你没有用到setModel()方法,而是直接在界面上点击修改数据,没有用到监听器去setModel()

你上面是一个提交表单,向d_insasp这个文件提交数据,这个表单有哪些数据呢?表单里所有的 input 都有一个 name 值,这个name表示各数据的名字,这些就是这个表单提交的数据。提交了,提交到了d_insasp这个文件,所以,我们在d_insasp这个文件里,就要去接数据,然后把数据写入数据库。下面,我详细说一下如何接收数据和把接收的数据写入数据库。

<%

set rs=serverCreateObject("adodbrecordset")

sql="select from tb"

rsopen sql,conn,1,3

rsaddnew

'上面是打开数据表tb,并新建一个插入记录

'我只以前几项数据来说明,其它数据一样用法

,下面用Requestform方法接收上面所说的表单提交过来的数据 name 为 "name" (两个name不要搞混了。)把接收到的数据赋值给t_name

t_name=Requestform("name")

t_pasw1=Requestform("pasw1")

t_pasw2=Requestform("pasw2")

t_email=Requestform("t_email")

……

'依此类推,格式完全一样。这里要对两个密码进行比较,如果不一样得返回提交表单,这个就不细说了。如果两次输入密码一样,则任意保存一个为密码即可。

然后将t_name赋值给新数据集里的t_name项。

rst_name=t_name

rst_pasw1=t_pasw1

'其实数据表里只需要一条密码项,在保存的时候对两次密码进行判断后保存一个即可。

rst_email=t_email

……

'然后对所有的数据赋集写入数据表,用update

rsupdate

rsclose

responsewrite "保存成功!"

%>

这是最基本最简单的,完善的情况还应该涉及到对数据类型的判断,长度的判断等。

以上就是关于自定义datatable怎么mysqldataadapter批量写入数据库全部的内容,包括:自定义datatable怎么mysqldataadapter批量写入数据库、java把JTable中的数据插入到数据库问题、如何更改Swing-JTable单元格中的内容后,存入数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10091861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存