c# orcale 用C#批量导入图片到orcale的表中
来源:互联网 发布:igmp端口号 编辑:程序博客网 时间:2024/06/07 00:41
第一步首先:检测orcale数据库是否能够链接成功。
第二步接着:如果可以链接成功,再检查你要插入图片的表是否存在。
第三步接着:如果存在表,让用户选择必要的字段,之后开始批量导入图片。
<pre name="code" class="html"> /// <summary> /// 初始化事件 /// </summary> public Form1() { InitializeComponent(); txt_username.Text = ConfigUtil.ReadWebConfigFromSetup("USERNAME", "App.config"); <span style="color:#ff0000;">从配置文件中读取配置项</span> txt_userpwd.Text = ConfigUtil.ReadWebConfigFromSetup("USERPWD", "App.config"); txt_dataSource.Text = ConfigUtil.ReadWebConfigFromSetup("DATASOURCE", "App.config"); }
<pre name="code" class="html"> /// <summary> /// 读配置文件(AppSettings) /// 作者:10216 /// 时间:2014-6-24 11:53:56 /// </summary> /// <param name="key">键</param> /// <param name="cfgPath">相对于程序启动目录下的文件路径</param> /// <returns></returns> public static string ReadWebConfigFromSetup(string key, string cfgPath) { try { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = SystemUtil.GetExeSetupPath() + cfgPath; Configuration cfg = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); string value = cfg.AppSettings.Settings[key] == null ? "" : cfg.AppSettings.Settings[key].Value; return value; } catch (Exception e) { throw new Exception(e.Message); } }
检查方法:
private void bt_check_Click(object sender, EventArgs e) { if ((!string.IsNullOrEmpty(txt_username.Text)) && (!string.IsNullOrEmpty(txt_dataSource.Text))) { if (Commen.CheckConnection(txt_username.Text, txt_userpwd.Text, txt_dataSource.Text))<span style="color:#ff0000;">这个方法(1)</span> { ConfigUtil.WriteWebConfigToSetup("USERNAME", txt_username.Text, "App.config");<span style="color:#ff0000;">方法2</span> ConfigUtil.WriteWebConfigToSetup("USERPWD", txt_userpwd.Text, "App.config"); ConfigUtil.WriteWebConfigToSetup("DATASOURCE", txt_dataSource.Text, "App.config"); MessageBox.Show("链接成功!", "提示!"); btn_in.Enabled = true; } else { MessageBox.Show("无法链接成功,请检测配置!", "提示!"); } } else { MessageBox.Show("用户名或数据源为空!", "提示!"); } }
这个方法是检查数据库是否可以链接成功。
<pre name="code" class="html"> /// <summary><span style="color:#ff0000;">方法(1)</span> /// 检测链接是否成功 /// </summary> /// <param name="username"></param> /// <param name="userpwd"></param> /// <param name="datasource"></param> /// <returns></returns> public static bool CheckConnection(string username, string userpwd, string datasource) { string connectionString = string.Format("Persist Security Info=False;Data Source='{0}';User ID='{1}';Password='{2}'", datasource, username, userpwd); using (OracleConnection conn = new OracleConnection(connectionString)) { try { conn.Open(); conn.Close(); return true; } catch { return false; } } }
/// <summary>方法2
/// 写配置文件(AppSettings)
/// 作者:10216
/// 时间:2014-6-24 11:53:56
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="cfgPath">相对于程序启动目录下的文件路径</param>
public static void WriteWebConfigToSetup(string key, string value, string cfgPath)
{
try
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = SystemUtil.GetExeSetupPath() + cfgPath;方法3
Configuration cfg = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
AppSettingsSection app = cfg.AppSettings;
if (cfg.AppSettings.Settings[key] == null)
{
app.Settings.Add(key, value);
cfg.Save(ConfigurationSaveMode.Modified);
}
else
{
app.Settings[key].Value = value;
cfg.Save(ConfigurationSaveMode.Modified);
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
<pre name="code" class="html"> /// <summary><span style="color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">方法3</span> /// 获取应用程序启动根目录的物理路径 /// 作者:10216 /// 时间:2014-7-30 23:00:21 /// </summary> /// <returns></returns> public static string GetExeSetupPath() { return Application.StartupPath + "/"; }检查表是否存在
<pre name="code" class="html"> /// <summary> /// 检测表是否存在 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bt_check_Click(object sender, EventArgs e) { groupBox1.Enabled = false; groupBox2.Enabled = false; bt_pic_path.Enabled = false; DataTable dt= Commen.CheckTable(USERNAME, USERPWD, DATASOURCE, txt_table.Text);//<span style="color:#ff0000;">检查表</span> if (dt != null) { foreach (DataColumn dc in dt.Columns) { cmb_pic.Items.Add(dc.ColumnName.ToString()); cmb_picname.Items.Add(dc.ColumnName.ToString()); cmb_zhujian.Items.Add(dc.ColumnName.ToString()); } MessageBox.Show("检查已成功,请配置图片字段!", "提示!"); groupBox1.Enabled = true; groupBox2.Enabled = true; bt_pic_path.Enabled = true; } }
/// <summary> /// 检查表是否存在 /// </summary> /// <param name="username"></param> /// <param name="userpwd"></param> /// <param name="datasource"></param> /// <param name="tablename"></param> /// <returns></returns> public static DataTable CheckTable(string username, string userpwd, string datasource, string tablename) { DataTable dt = new DataTable(); string connectionString = string.Format("Persist Security Info=False;Data Source='{0}';User ID='{1}';Password='{2}'", datasource, username, userpwd); using (OracleConnection conn = new OracleConnection(string.Format(connectionString))) { conn.Open(); try { using (OracleCommand cmd = conn.CreateCommand()) { cmd.CommandText = string.Format("SELECT * FROM " + tablename); OracleDataAdapter adapter = new OracleDataAdapter(cmd); adapter.Fill(dt); return dt; conn.Close(); cmd.Clone(); adapter.Dispose(); } } catch { MessageBox.Show(tablename + "表不存在,请查证后再测!", "提示!"); dt = null; return dt; conn.Close(); } } }
/// <summary>
/// 开始导入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bt_pic_path_Click(object sender, EventArgs e)
{
if ((cmb_zhujian.Text != "") && (cmb_picname.Text != "") && (cmb_pic.Text != ""))
{
if ((rb_create.Checked) || (rb_update.Checked))
{
string path = null;
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
try
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
path = folderBrowserDialog1.SelectedPath;
}
DirectoryInfo dir = new DirectoryInfo(path);//文件路径
//数组接收获得所有文件
FileInfo[] files = dir.GetFiles();
//循环文件夹
if (rb_create.Checked)
{
Commen.DeleteTableData(USERNAME, USERPWD, DATASOURCE, txt_table.Text);//删除表之前的数据
}
foreach (FileInfo file in files)
{
//获得扩展名
string ex = file.Extension;
//判断扩展名
if (ex == ".jpg")
{
picName = file.Name.Substring(0, file.Name.Length - 4);
fileName = path + '\\' + file.Name;
fileData = getBytes(fileName);
if (fileData == null) return;
MemoryStream ms = new MemoryStream(fileData);
Bitmap bmpt = new Bitmap(ms);
pb_img.Image = bmpt;
if (rb_create.Checked)
{
bt_start_Click(null, null);
}
else if (rb_update.Checked)
{
UpdatePic();
}
countPic++;
}
}
if (countPic != 0)
{
if (rb_create.Checked)
{
MessageBox.Show(countPic + "个图片保存成功!", "提示");
}
else if (rb_update.Checked)
{
MessageBox.Show(countPic + "个图片更新成功!", "提示");
}
}
else
{
countPic = 0;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
}
}
else
{
MessageBox.Show("必须选择一个模式!", "提示");
}
}
else
{
MessageBox.Show("图片必备字段不能为空,请查看!", "提示");
}
}
<pre name="code" class="html"> /// <summary> /// 开始导入事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bt_start_Click(object sender, EventArgs e) { if (fileData == null) { MessageBox.Show("图片为空!请检查文件夹是否有图片!", "提示"); return; } try { Commen.SetImage(USERNAME, USERPWD, DATASOURCE, txt_table.Text,countPic, fileData,picName,cmb_picname.Text,cmb_pic.Text,cmb_zhujian.Text); } catch (Exception ex) { MessageBox.Show("保存失败!", "提示"); return; } }
public static void SetImage(string username, string userpwd, string datasource, string tablename,int countPic, byte[] fileData,string picName,string picNameZiDuan,string picZiduan,string zhujian) { string connectionString = string.Format("Persist Security Info=False;Data Source='{0}';User ID='{1}';Password='{2}'", datasource, username, userpwd); string sql = string.Format("INSERT INTO {0} ({1},{2},{3}) values ({4},'{5}',:IMGDATA)", tablename, zhujian, picNameZiDuan, picZiduan,countPic,picName); OracleConnection conn = new OracleConnection(string.Format(connectionString)); System.Data.OracleClient.OracleCommand oraComm = new System.Data.OracleClient.OracleCommand(sql, conn); oraComm.Parameters.Add(":IMGDATA", System.Data.OracleClient.OracleType.Blob);//添加参数 oraComm.Parameters[":IMGDATA"].Value = fileData;//为参数赋值 conn.Open(); oraComm.ExecuteNonQuery(); oraComm.Dispose(); conn.Close(); conn.Dispose(); }
public static void UpdateImage(string username, string userpwd, string datasource, string tablename, byte[] fileData, string picName, string picNameZiDuan, string picZiduan) { string connectionString = string.Format("Persist Security Info=False;Data Source='{0}';User ID='{1}';Password='{2}'", datasource, username, userpwd); string sql = string.Format("UPDATE {0} SET {1}=:IMGDATA WHERE {2} = {3}", tablename, picZiduan,picNameZiDuan, picName); OracleConnection conn = new OracleConnection(string.Format(connectionString)); System.Data.OracleClient.OracleCommand oraComm = new System.Data.OracleClient.OracleCommand(sql, conn); oraComm.Parameters.Add(":IMGDATA", System.Data.OracleClient.OracleType.Blob);//添加参数 oraComm.Parameters[":IMGDATA"].Value = fileData;//为参数赋值 conn.Open(); oraComm.ExecuteNonQuery(); oraComm.Dispose(); conn.Close(); conn.Dispose(); }
public static void DeleteTableData(string username, string userpwd, string datasource, string tablename)
{
string connectionString = string.Format("Persist Security Info=False;Data Source='{0}';User ID='{1}';Password='{2}'", datasource, username, userpwd);
string sql2 = string.Format("DELETE FROM {0}", tablename);
OracleConnection conn = new OracleConnection(string.Format(connectionString));
System.Data.OracleClient.OracleCommand oraComm2 = new System.Data.OracleClient.OracleCommand(sql2, conn);
conn.Open();
oraComm2.ExecuteNonQuery();
oraComm2.Dispose();
conn.Close();
conn.Dispose();
}
0 0
- c# orcale 用C#批量导入图片到orcale的表中
- excel中数据导入到Orcale数据库表中的方法
- C# Orcale 简易封装
- C#链接orcale
- c# 直连orcale数据
- orcale数据库的导入导出
- orcale数据库的导入导出
- ORCALE
- orcale
- asp /asp.net c#链接Orcale 数据库的方案
- mybatis中 mysql 和orcale批量插入
- 记录 orcale 在mybatis中批量添加
- orcale中正则的用法
- 把ORCALE数据导入MYSQL中
- orcale存储过程批量插入表数据
- 批量删除Orcale数据库用户表
- orcale批量录入
- orcale 批量生成 插入。
- 用shipyard来管理docker
- 快慢指针和链表原地反转
- android与Socket通信
- ios TableView那些事(二十 九)UITableViewController 粘合性
- tar 解压到指定文件
- c# orcale 用C#批量导入图片到orcale的表中
- ifndef/define/endif作用和用法
- Windows 8 各个版本区别对比
- 创建数据库快照
- mysql模糊查询
- 黑马程序员-OC学习笔记-----封装、继承、多态
- Hadoop2.2 HA安装
- (12) 关于Linux 定时任务crontab的一些存疑 解释
- 百度面试题:用链表交叉判断迭代打开url问题