自动生成Insert 语句的小工具
来源:互联网 发布:昆山cnc编程 编辑:程序博客网 时间:2024/05/01 14:49
做了一个小工具,可以将 SQLSERVER 中的表、视图或者查询语句导出为Insert 语句。
如上图所示,你只要输入查询字符串,查询的SQL 语句 比如 select * from news
生成Insert 语句中的表名已经生成行数,点击 Build 就可以生成一个批量Insert 语句的文件。
源码和可执行程序下载地址
代码
Database 类
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { 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; }.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { 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; }
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace BuildInsertSql
{
class Database : IDisposable
{
SqlConnection _Conn;
SqlDataReader _DataReader;
DataTable _SchemaTable;
SqlCommand _Command;
public void Connect(string connectString)
{
Close();
_Conn = new SqlConnection(connectString);
_Conn.Open();
}
public void Close()
{
Dispose();
}
public DataSet GetSchema(string queryString)
{
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(
queryString, _Conn);
adapter.FillSchema(ds, SchemaType.Mapped);
return ds;
}
public void OpenDataReader(string queryString)
{
_Command = new SqlCommand(queryString, _Conn);
_SchemaTable = GetSchema(queryString).Tables[0];
_DataReader = _Command.ExecuteReader();
}
public void CloseDataReader()
{
_DataReader.Close();
}
public void Clear()
{
_SchemaTable.Clear();
}
public DataRow GetNextRow()
{
if (_DataReader.Read())
{
DataRow row = _SchemaTable.NewRow();
foreach (DataColumn col in _SchemaTable.Columns)
{
row[col.ColumnName] = _DataReader[col.ColumnName];
}
return row;
}
else
{
return null;
}
}
~Database()
{
Close();
}
#region IDisposable Members
public void Dispose()
{
try
{
if (_Conn != null)
{
_Command.Cancel();
_DataReader.Close();
if (_Conn.State != ConnectionState.Closed &&
_Conn.State != ConnectionState.Broken)
{
_Conn.Close();
}
_Conn = null;
}
}
catch
{
}
}
#endregion
}
}
FromMain 类
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BuildInsertSql
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private string GetOneRowSql(DataSet schema, DataRow row, string tableName)
{
StringBuilder insertString = new StringBuilder();
insertString.AppendFormat("Insert {0} (", tableName);
int i = 0;
foreach (DataColumn col in schema.Tables[0].Columns)
{
if (i == 0)
{
insertString.AppendFormat("[{0}]", col.ColumnName);
}
else
{
insertString.AppendFormat(", [{0}]", col.ColumnName);
}
i++;
}
insertString.Append(") Values(");
i = 0;
foreach (DataColumn col in schema.Tables[0].Columns)
{
string value;
if (row[col.ColumnName] == DBNull.Value)
{
value = "NULL";
}
else
{
if (col.DataType == typeof(string))
{
value = "'" + row[col.ColumnName].ToString().Replace("'", "''") + "'";
}
else if (col.DataType == typeof(DateTime))
{
value = "'" + ((DateTime)(row[col.ColumnName])).ToString("yyyy-MM-dd HH:mm:ss") + "'";
}
else
{
value = row[col.ColumnName].ToString();
}
}
if (i == 0)
{
insertString.AppendFormat("{0}", value);
}
else
{
insertString.AppendFormat(", {0}", value);
}
i++;
}
insertString.Append(");");
return insertString.ToString();
}
private void buttonBuild_Click(object sender, EventArgs e)
{
try
{
if (saveFileDialogSql.ShowDialog() == DialogResult.OK)
{
using (Database db = new Database())
{
db.Connect(textBoxConnectionString.Text);
DataSet ds = db.GetSchema(textBoxSQL.Text);
int totalRecords = int.MaxValue;
if (numericUpDownTotalRecords.Value > 0)
{
totalRecords = (int)numericUpDownTotalRecords.Value;
}
db.OpenDataReader(textBoxSQL.Text);
DataRow row = db.GetNextRow();
using (System.IO.FileStream fs = new System.IO.FileStream(saveFileDialogSql.FileName, System.IO.FileMode.Create,
System.IO.FileAccess.ReadWrite))
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs, Encoding.UTF8))
{
int current = 0;
while (row != null && totalRecords > 0)
{
totalRecords--;
string line = GetOneRowSql(ds, row, textBoxTableName.Text);
db.Clear();
sw.WriteLine(line);
current++;
labelCurrent.Text = current.ToString();
Application.DoEvents();
row = db.GetNextRow();
}
}
}
}
MessageBox.Show("Build Successful!");
}
}
catch (Exception e1)
{
MessageBox.Show(e1.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
- 自动生成Insert 语句的小工具
- 自动生成JavaBean的轻量级小工具
- 自动生成Xpath小工具
- Execl生成 insert Sql自用小工具
- VC使用VAssisstX的小工具,自动生成注释
- 批量生成sql 语句小工具
- 自动生成Insert Into 的SQL语句
- shawl.qiu c# .net 自动生成 OleDb 数据操作语句小工具 Producing OleDbSql 1.1
- [置顶] 自动更具数据库表来生成.java文件的小工具
- 自动生成sql insert 语句
- 生成网站缩略图的小工具
- VS 生成代码段的小工具
- 图片生成Gif的golang小工具
- sql自动批量生成海量数据的小工具(安装包) 链接
- VC使用VAssisstX的小工具,自动生成注释,快捷键设置
- 菜鸟蹒跚学ASP-自动生成Insert语句的VBS
- 自动生成INSERT语句的SQL存储过程
- 【小工具】用js自动生成pdf目录索引
- 求子矩阵元素最大和
- 回车触发提交事件
- flash播放器
- 用Windows Live Writer写CSDN博客
- 一定要信守“有容乃大,无欲则刚”,绝对错不了。
- 自动生成Insert 语句的小工具
- 如何用vs2005生成.exe可执行安装文件
- Cookie操作类
- Spring Quartz动态配置时间
- CentOS搭建LAMP
- Discuz!NT模板基本语法
- python 中使用paramiko简单连接
- DataTable.NewRow 内存无法释放问题
- 通俗案例剖析市场营销