C#小白使用入门,数据库操作,web端文件下载,执行外部程序,操作ini文件

Posted cxpeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#小白使用入门,数据库操作,web端文件下载,执行外部程序,操作ini文件相关的知识,希望对你有一定的参考价值。

现况:现有程序被排在服务器的每日执行任务计划中,程序功能是下载web端的一个文件,然后塞入到数据库中。

问题:不知道什么原因,偶尔发现服务器任务执行失败情况,导致某一天的数据缺失。

需求:每隔三天检查一次数据是否存在,如果不存在,则指定日期重新下载一次。

 

第一步:写一个操作数据库的类

namespace DEMO2616

public class OracleDBlink

string connStr = "User Id=LIRUPENG;Password=Lrp19961013..;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.4)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)))";                      //连接字符串
OracleConnection dblink;
public OracleDBlink()                                    //构造方法,new即调用

try

  dblink = new OracleConnection(connStr);  //先new一个OracleConnection 把连接字符串传过去。
  dblink.Open();              //调用方法.连接

catch (OracleException ex)           //异常处理

  dblink.Close();
  throw new Exception(ex.Message);       

finally

  if (dblink.State != ConnectionState.open)
  
    dblink.Close();
  


public DataSet Query(string sql)        // 查询操作 ,传入sql字符串

  DataSet datatable = new DataSet();     //先new一个dataset放数据
  OracleDataAdapter data = new OracleDataAdapter(sql,dblink); //new一个DataAdapter 按照sql语法把数据从数据库中提取出来。
  data.Fill(datatable);          //把提取出来的数据放到datatable中
  return datatable;            //返回提取出来的数据

public int curd(string sql)          //delete insert update create 操作  同样传入SQL字符串

  OracleCommand curd = new OracleCommand(sql);           
  int i = curd.ExecuteNonQuery();
  return i;                //返回影响的行数 -1代表失败

public bool Exists(string sql,OracleParameter[] op)           //判断数据是否存在

OracleCommand exists = new OracleCommand(sql,dblink);
object obj= exists.ExecuteScalar();      //返回一个对象。第一条数据的第一列
if ((object.Equals(obj, null)) || (object.Equals(obj, System.DBNull.Value)))

  return false;

else
  return true;


 

第二步:检查数据是否存在,然后再进行下载,或者再执行原本程序。

namespace DEMO2616

public partial class download : Form

  public download()

  InitializeComponent();


[DllImport("kernel32")]             //操作ini文件一定要先声明这一段
public static extern void WritePrivateProfileString(string sectionName, string key, string value, string filePath);

OracleDBlink SQLquery = new OracleDBlink();    //先new数据库连接类。
DataSet table = new DataSet();        //承接查询出来的数据。
string sql;                   //SQL语句
private void button1_Click(object sender, EventArgs e)

string date=DateTime.Now.ToString("yyyyMMdd");
string pos = "WHRKZFB20000002";
string urlpath;
string savepath;
string filelayout;
string inipath= System.Environment.CurrentDirectory;   //获取当前路径


  //OracleParameter[] oparam = new OracleParameter("date", OracleDbType.Varchar2),
                   //new OracleParameter("pos", OracleDbType.Varchar2);    //Oracle SQL语句参数。
  //oparam[0].Value = date;
  //oparam[1].Value = pos;


for (int i = 1; i <=3; i++)

  date = DateTime.Now.AddDays(-i).ToString("yyyyMMdd");
  sql = "select * FROM whrk.yy_bank_detail where BANKLIQUIDATIONDATE=‘" +date+"‘and BANKMERCHANTNO=‘"+pos+"‘";
  if (SQLquery.Exists(sql,oparam))    // 判断数据是否存在(true)
  
    return;
  
  else
  
  date = date.Substring(1, 4) + "-" + date.Substring(4, 6) + "-" + date.Substring(6, 8);
  inipath = inipath + @"D:\WorkSpace\刘普20190725日更新支付宝支付\whrk_Download\download.ini";
  SetValue("WIN", "is_dateno","1", inipath); //改ini文件
  SetValue("WIN", "is_date", date, inipath);
  //System.Diagnostics.Process.Start(@"D:\WorkSpace\刘普20190725日更新支付宝支付\whrk_download.exe");//执行程序
  SetValue("WIN", "is_dateno", "0", inipath);
  //下载流水文件
  for (int k = 1; k < 3; k++)
    
       if (k == 1) filelayout = "_1.txt";
      else filelayout = "_68.xls";
      urlpath = @"ftp://uisftp.chinaums.com/build/10210002730000_" + date + filelayout;
      savepath = @"G:\WorkSpace\学习文档\" + date + filelayout;
      downloadfile("10210002730000", "Ab123456", urlpath, savepath); //账户,密码,目标路径,本地路径。
      

  

public void downloadfile(string userName,string password,string url,string savepath) //下载url 中文件;//参数分别为:账户,密码,目标路径,本地路径。

  WebClient webclient = new WebClient();
  webclient.Encoding = Encoding.UTF8;
  webclient.Credentials = new NetworkCredential(userName, password);
  webclient.DownloadFile(url,savepath);

public static bool SetValue(string sectionName, string key, string value, string filePath) //操作INI配置文件

  WritePrivateProfileString(sectionName, key, value, filePath);
  return true;

private void button3_Click(object sender, EventArgs e)                 //执行外部程序测试。

  System.Diagnostics.Process.Start(@"C:\QQmusic\QQMusic.exe");
  MessageBox.Show("执行成功");


以上是关于C#小白使用入门,数据库操作,web端文件下载,执行外部程序,操作ini文件的主要内容,如果未能解决你的问题,请参考以下文章

电脑小白学习软件开发-C#的选择语句异常捕获,进攻程序员

小白入门之前端网页技术JavaScript

用C#连接操作MYSQL时,老是会超时,怎么处理SQL语句执超时啊,连接字符串里好像设置不了。

Redis小白入门教程

git 小白入门( 二 ) —— 入门操作

Java零基础小白必看的学习路线图,快速入门!