您的位置:首页 > 其它

自动生成Insert 语句的小工具

2009-10-12 14:49 459 查看
做了一个小工具,可以将SQLSERVER中的表、视图或者查询语句导出为Insert语句。





如上图所示,你只要输入查询字符串,查询的SQL语句比如select*fromnews

生成Insert语句中的表名已经生成行数,点击Build就可以生成一个批量Insert语句的文件。

源码和可执行程序下载地址

代码

Database类

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data;
usingSystem.Data.SqlClient;
namespaceBuildInsertSql
{
classDatabase:IDisposable
{
SqlConnection_Conn;
SqlDataReader_DataReader;
DataTable_SchemaTable;
SqlCommand_Command;
publicvoidConnect(stringconnectString)
{
Close();
_Conn=newSqlConnection(connectString);
_Conn.Open();
}
publicvoidClose()
{
Dispose();
}
publicDataSetGetSchema(stringqueryString)
{
DataSetds=newDataSet();
SqlDataAdapteradapter=newSqlDataAdapter();
adapter.SelectCommand=newSqlCommand(
queryString,_Conn);
adapter.FillSchema(ds,SchemaType.Mapped);
returnds;
}
publicvoidOpenDataReader(stringqueryString)
{
_Command=newSqlCommand(queryString,_Conn);
_SchemaTable=GetSchema(queryString).Tables[0];
_DataReader=_Command.ExecuteReader();
}
publicvoidCloseDataReader()
{
_DataReader.Close();
}
publicvoidClear()
{
_SchemaTable.Clear();
}
publicDataRowGetNextRow()
{
if(_DataReader.Read())
{
DataRowrow=_SchemaTable.NewRow();
foreach(DataColumncolin_SchemaTable.Columns)
{
row[col.ColumnName]=_DataReader[col.ColumnName];
}
returnrow;
}
else
{
returnnull;
}
}
~Database()
{
Close();
}
#regionIDisposableMembers
publicvoidDispose()
{
try
{
if(_Conn!=null)
{
_Command.Cancel();
_DataReader.Close();
if(_Conn.State!=ConnectionState.Closed&&
_Conn.State!=ConnectionState.Broken)
{
_Conn.Close();
}
_Conn=null;
}
}
catch
{
}
}
#endregion
}
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

FromMain类

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceBuildInsertSql
{
publicpartialclassFormMain:Form
{
publicFormMain()
{
InitializeComponent();
}
privatestringGetOneRowSql(DataSetschema,DataRowrow,stringtableName)
{
StringBuilderinsertString=newStringBuilder();
insertString.AppendFormat("Insert{0}(",tableName);
inti=0;
foreach(DataColumncolinschema.Tables[0].Columns)
{
if(i==0)
{
insertString.AppendFormat("[{0}]",col.ColumnName);
}
else
{
insertString.AppendFormat(",[{0}]",col.ColumnName);
}
i++;
}
insertString.Append(")Values(");
i=0;
foreach(DataColumncolinschema.Tables[0].Columns)
{
stringvalue;
if(row[col.ColumnName]==DBNull.Value)
{
value="NULL";
}
else
{
if(col.DataType==typeof(string))
{
value="'"+row[col.ColumnName].ToString().Replace("'","''")+"'";
}
elseif(col.DataType==typeof(DateTime))
{
value="'"+((DateTime)(row[col.ColumnName])).ToString("yyyy-MM-ddHH:mm:ss")+"'";
}
else
{
value=row[col.ColumnName].ToString();
}
}
if(i==0)
{
insertString.AppendFormat("{0}",value);
}
else
{
insertString.AppendFormat(",{0}",value);
}
i++;
}
insertString.Append(");");
returninsertString.ToString();
}
privatevoidbuttonBuild_Click(objectsender,EventArgse)
{
try
{
if(saveFileDialogSql.ShowDialog()==DialogResult.OK)
{
using(Databasedb=newDatabase())
{
db.Connect(textBoxConnectionString.Text);
DataSetds=db.GetSchema(textBoxSQL.Text);
inttotalRecords=int.MaxValue;
if(numericUpDownTotalRecords.Value>0)
{
totalRecords=(int)numericUpDownTotalRecords.Value;
}
db.OpenDataReader(textBoxSQL.Text);
DataRowrow=db.GetNextRow();
using(System.IO.FileStreamfs=newSystem.IO.FileStream(saveFileDialogSql.FileName,System.IO.FileMode.Create,
System.IO.FileAccess.ReadWrite))
{
using(System.IO.StreamWritersw=newSystem.IO.StreamWriter(fs,Encoding.UTF8))
{
intcurrent=0;
while(row!=null&&totalRecords>0)
{
totalRecords--;
stringline=GetOneRowSql(ds,row,textBoxTableName.Text);
db.Clear();
sw.WriteLine(line);
current++;
labelCurrent.Text=current.ToString();
Application.DoEvents();
row=db.GetNextRow();
}
}
}
}
MessageBox.Show("BuildSuccessful!");
}
}
catch(Exceptione1)
{
MessageBox.Show(e1.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: