java读取mysql数据库并保存为xml与文本格式_C#读取MySql数据库并保存为xml与文本格式...

这段代码展示了如何使用Java和C#连接MySQL数据库,获取数据库名和表名,以及读取数据库表内容并保存为XML和文本格式。通过建立MySqlConnection,使用MySqlDataAdapter填充数据表,然后将数据转换和保存到XML文件和动态数组中。
摘要由CSDN通过智能技术生成

using System;

using System.Collections;

using System.IO;

using System.Text;

using CNEE.IF.VCY.Entity3D;

using MySql.Data.MySqlClient;

using System.Data;

using System.Threading;

using System.Windows.Forms;

using System.Xml;

using System.Xml.Serialization;

//

using System.Data.SqlClient;  // Use SQL Server data provider namespace

using System.Collections.Specialized;

namespace CNEE.IF.VCY

{

///

/// boxInfo_withMySql 的摘要说明。连接数据库信息

///

public class boxInfo_withMySql

{

///

/// 构造函数

///

public boxInfo_withMySql()

{

//

// TODO: 在此处添加构造函数逻辑,如何解决并发行数据修改?

//

//conn.ConnectionString="";

mysqlTables=new ArrayList();

mysqlDatabase=new ArrayList();

tableDate=new ArrayList();

}

///

/// 连接字段

///

private MySql.Data.MySqlClient.MySqlConnection conn;

private MySqlDataAdapter da;

//private System.Windows.Forms.DataGrid dataGrid;

private MySqlCommandBuilder cb;

private DataTable data;

///

/// 读取指定数据库后保存的所有数据表名

///

public IList mysqlTables;

///

/// 连接数据库后保持的所有数据名称

///

public IList mysqlDatabase;

///

/// 读取指定数据表保存的数据(一行一个对象)

///

public IList tableDate;

public bool islink=false;

#region

///

/// 连接mysql服务器,显示所有数据库名,保存在动态数组mysqlDatabase中

///

public void GetDatabases()

{

MySqlDataReader reader = null;

MySqlCommand cmd = new MySqlCommand("SHOW DATABASES", conn);

try

{

reader = cmd.ExecuteReader();

if(mysqlDatabase==null)

mysqlDatabase=new ArrayList();

mysqlDatabase.Clear();

while (reader.Read())

{

mysqlDatabase.Add( reader.GetString(0) );

}

//return true;//连接成功

}

catch (MySqlException ex)

{

MessageBox.Show("连接MySql数据库失败:/n " + ex.Message );

//return false;

}

finally

{

if (reader != null) reader.Close();

}

}

///

/// 连接数据库,显示指定数据库databaseName中的所有数据表,保存在mysqlTable动态数组中

///

public void GetDatabaseTables(string databaseName)

{

MySqlDataReader reader = null;

conn.ChangeDatabase( databaseName );

MySqlCommand cmd = new MySqlCommand("SHOW TABLES", conn);

try

{

if(mysqlTables==null)

mysqlTables=new ArrayList();

reader = cmd.ExecuteReader();

mysqlTables.Clear();

while (reader.Read())

{

mysqlTables.Add( reader.GetString(0) );

}

}

catch (MySqlException ex)

{

MessageBox.Show("Failed to populate table list: " + ex.Message );

}

finally

{

if (reader != null) reader.Close();

//this.Refresh();

}

}

//public static string server,user,password;

#endregion

///

/// 连接数据库(是否成功)

///

/// 如果连接成功返回真

public  bool linkMySql(string mysqlServer,string user,string password)

{

if (conn != null)

conn.Close();

islink=false;

string connStr = String.Format("server={0};user id={1}; password={2}; database=mysql; pooling=false",

mysqlServer, user, password );

try

{

//conn.ConnectionString=connStr;

//if(conn==null)

conn = new MySqlConnection( connStr );

conn.Open();

islink=true;

return true;

//多线程使用

//Thread th=new Thread(new ThreadStart(GetDatabases));

//th.IsBackground = true;

//th.Name = "loadxfile";

//th.Start();

}

catch (MySqlException ex)

{

MessageBox.Show( "Error connecting to the server: " + ex.Message );

return false;

}

return false;//这一步是运行不到的

}

///

/// 读取数据库配置文件,连接指定的数据,填充堆场和轮船中的箱子

///

private void ReadXml()

{

ArrayList ArryList11 = new ArrayList();

ArrayList ArryList12 = new ArrayList();

//假设你的xml文件名为demo.xml确保路径正确

string xmlPath = "demo.xml";

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(xmlPath);

XmlNodeList xnl = xmlDoc.SelectSingleNode("Configuration").ChildNodes;

foreach (XmlNode node in xnl)

{

foreach (XmlNode emailnode in node.SelectNodes("connstr"))

{

ArryList11.Add(emailnode.InnerText);

}

foreach (XmlNode keywordnode in node.SelectNodes("KeyWord"))

{

ArryList12.Add(keywordnode.InnerText);

}

}

}

///

/// 读取xml连接数据库配置文件得到connstr字符串信息

///

///

public static string readXmlSqlconn()

{

XmlDocument doc = new XmlDocument();

doc.Load("ConnMysql.xml");

//获得根节点下的所有子节点

XmlNodeList xnl = doc.SelectSingleNode("Configuration").ChildNodes;

//获得所有子节点group

string ConnStr="";

foreach (XmlNode node in xnl)

{ //遍历所有group子节点

foreach (XmlNode connNode in node.SelectNodes("connStr"))

{ //遍历group子节点的子节点,选择匹配的节点

ConnStr=connNode.InnerText;

}

}

return ConnStr;

//

}

///

/// 读取xml配置文件连接数据库

///

///

///

public bool linkMySql(string connString)

{

if(conn!=null)

conn.Close();

islink=false;

string connStr=String.Format(connString);

try

{

conn=new MySqlConnection(connStr);

conn.Open();

islink=true;

return true;

}

catch(MySqlException ex)

{

MessageBox.Show(ex.Message);

return false;

}

return false;

}

///

/// 断开连接

///

///

public void closeConn()

{

if(conn!=null)

conn.Close();

islink=false;

}

///

/// 把数据库表内容显示到DataGrid中

///

///

///

///

public void showDataTableSouse(string DatabaseName,string DatetableName,ref DataGrid dv)

{

try

{

conn.ChangeDatabase( DatabaseName);

data = new DataTable();

data.TableName=DatabaseName;

//

da = new MySqlDataAdapter("SELECT * FROM " + DatetableName, conn );

cb = new MySqlCommandBuilder( da );

//

da.Fill( data );

//dv=new DataView();

//da.Fill(dv.Table);

dv.DataSource=data;

}

catch{MessageBox.Show("失败");}

}

///

/// 连接指定的数据库DatabaseName中的数据表DatetableName,返回一个数据表DataTable

///

///

///

///

public DataTable readTabletoSave(string DatabaseName,string DatetableName)

{

try

{

conn.ChangeDatabase( DatabaseName);

data = new DataTable();

//

da = new MySqlDataAdapter("SELECT * FROM " + DatetableName, conn );

cb = new MySqlCommandBuilder( da );

//

da.Fill( data );

//

//下面保存到动态数组tableData中

if(tableDate==null)

tableDate=new ArrayList();

tableDate.Clear();

for(int row=0;row

{

string rowstr="";

object[] row_allColunbs=data.Rows[row].ItemArray;

foreach(object str in row_allColunbs)

{

if(str.ToString()=="System.Byte[]")

rowstr+=",";//最后多了一个空格

else

rowstr+=str.ToString()+",";

}

//rowstr=rowstr.Substring(0,rowstr.Length-2);

//rowstr.Replace("System.Byte[]"," ");//换成 , 符号分割

//char[]dot={','};

//rowstr.TrimEnd(dot);

//rowstr.Replace("System.Byte[]"," ");

string st= rowstr.Remove(rowstr.Length-1,1);

tableDate.Add(st);//把数据保持到tableDate动态数组中

//for(int lie=0;lie

//{

//读取指定的单元格,怎么改成一行数据呢?

//}

}

//把数据写进xml中

DataSet thisDataSet = new DataSet();

da.Fill(thisDataSet,"MysqlDateInfo");//填充到内存缓冲表boxInfo中

XmlDataDocument daxml=new XmlDataDocument(thisDataSet);

//thisDataSet.WriteXml(@"/boxInfo.xml");//写入到xml中

//创建文件夹

if(!Directory.Exists(DatabaseName))

{

Directory.CreateDirectory(DatabaseName);//创建mysql指定数据库名目录

}

daxml.DataSet.WriteXml(DatabaseName+"//"+DatetableName+".xml");

//

//把数据保持到xml.dat中去

SaveOrReadYardBoxInfo.saveIList(tableDate,DatabaseName+"//"+DatetableName);

//

//下面保存数据表标题

//怎么读取?

string strs="";

for(int i=0;i

{

strs+=data.Columns[i].ColumnName.ToString()+",";

}

string str2= strs.Remove(strs.Length-1,1);

SaveOrReadYardBoxInfo.saveString(str2,DatabaseName+"//"+DatetableName+"._Columns"); //+"_Columns");

return data;

//dataGrid1.DataSource = data;

}

catch(MySqlException ex)

{

MessageBox.Show(ex.ToString());

//M

return null;

}

}

///

/// 从Mysql中读取堆场箱子信息(未完成)

///

///

private static IList readYardboxInfo()

{

IList yardboxinfo=new ArrayList();

//

return yardboxinfo;

}

///

/// 把堆场箱子信息保存到数据库(未完成)

///

private static void saveYardboxInfo()

{

//数据库字段很多,这个怎么写?cneecy/container显示在场数据

//

}

///

/// 从MYSQL数据库中读取指定轮船的箱子信息(未完成)

///

///

private static IList readVessileboxInfo()

{

IList vessileboxinfo=new ArrayList();

//读取数据库数据cneecy/container显示在场数据

//读取xml链接数据库配置信息

//

return vessileboxinfo;  }  ///   /// 保存指定轮船的箱子信息到Mysql数据库(未完成)  ///   ///   private static void saveVessileboxInfo(int vessileId)  {   //轮船箱子信息数据表cydoc/stowageplandetail  } }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java数据库查询结果的输出 摘自:北京海脉信息咨询有限公司   利用Java开发数据库应用时,经常需要在用户界面上显示查询结果。我们可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题。 类Vector:   定义如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 类JTable:   JTable组件是Swing组件中比较复杂的小件,隶属于javax.swing包,它能以二维表的形式显示数据。类Jtable: 定义如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 类AbstractTableModel:   定义如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…}   生成一个具体的TableModel作为AbstractTableMode的子类,至少必须实现下面三个方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);   我们可以建立一个简单二维表(5×5): TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 5; } public int getRowCount() { return 5;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 数据库及其连接方法:   我们采用Sybase数据库数据库存放在数据库服务器中。路径为:D:WORKER,数据库名为:worker.dbf。具有以下字段: 字段名 类型 Wno(职工号) VARCHAR Wname(职工名) VARCHAR Sex(性别) VARCHAR Birthday(出生日期) DATE Wage(工资) FLOAT   要连接此数据库,需使用java.sql包中的类DriverManager。此类是用于管理JDBC驱动程序的实用程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序,设置登记和数据库访问登录超时等方法。   具体连接方法如下:   定位、装入和链接SybDriver类。 driver="com.sybase.jdbc.SybDriver"; SybDriver sybdriver=(SybDriver) Class.forName(driver).newInstance();   注册SybDriver类。 DriverManager.registerDriver(sybdriver);   取得连接(SybConnection)对象引用。 user="sa"; password=""; url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER"; SybConnection connection= (SybConnection)DriverManager.getConnection (url,user,password); 建立完连接后,即可通过Statement接口进行数据库的查询与更改。 实现方法:   对象声明。   AbstractTableModel tm;   //声明一个类AbstractTableModel对象   JTable jg_table;//声明一个类JTable对象   Vector vect;//声明一个向量对象   JScrollPane jsp;//声明一个滚动杠对象   String title[]={"职工号","职工名",   "性别","出生日期","工资"};   //二维表列名   定制表格。   实现抽象类AbstractTableModel对象tm中的方法:   vect=new Vector();//实例化向量   tm=new AbstractTableModel(){   public int getColumnCount(){   return title.length;}//取得表格列数   public int getRowCount(){   return vect.size();}//取得表格行数   public Object getValueAt(int row,int column){   if(!vect.isEmpty())   return   ((Vector)vect.elementAt(row)).elementAt(column);   else   return null;}//取得单元格中的属性值   public String getColumnName(int column){   return title[column];}//设置表格列名   public void setValueAt   (Object value,int row,int column){}   //数据模型不可编辑,该方法设置为空   public Class getColumnClass(int c){   return getValueAt(0,c).getClass();   }//取得列所属对象类   public boolean isCellEditable(int row,int column){   return false;}//设置单元格不可编辑,为缺省实现   };   定制表格:   jg_table=new JTable(tm);//生成自己的数据模型   jg_table.setToolTipText("显示全部查询结果");   //设置帮助提示   jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);   //设置表格调整尺寸模式   jg_table.setCellSelectionEnabled(false);   //设置单元格选择方式   jg_table.setShowVerticalLines(true);//   设置是否显示单元格间的分割线   jg_table.setShowHorizontalLines(true);   jsp=new JScrollPane(jg_table);//给表格加上滚动杠   显示查询结果。   连接数据库:已给出。   数据库查询:   Statement stmt=connection.createStatement();   ResultSet rs=stmt.executeQuery   ("select * from worker");   显示查询结果:   vect.removeAllElements();//初始化向量对象   tm.fireTableStructureChanged();//更新表格内容   while(rs.next()){   Vector rec_vector=new Vector();   //从结果集中取数据放入向量rec_vector中   rec_vector.addElement(rs.getString(1));   rec_vector.addElement(rs.getString(2)); rec_vector.addElement(rs.getString(3)); rec_vector.addElement(rs.getDate(4));   rec_vector.addElement(new Float(rs.getFloat(5)));   vect.addElement(rec_vector);   //向量rec_vector加入向量vect中   }   tm.fireTableStructureChanged();   //更新表格,显示向量vect的内容   实现示图中记录前翻、后翻的效果,有两种方法:   如果软件环境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()获得记录,然后通过类JTextField中的setText()方法,显示出各个字段值。   如果不支持JDBC2.0,则可利用向量Vector按行取出JTable中数据。自定义一个指针,用来记录位置。当指针加1时,取出上一行数据放入Vector中显示;指针减1时,取出下一行数据显示。显示方法同上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值