C#读取SQL数据库,并将读取的数据上传至服务简易Demo
1.使用的NuGet包
2.IRepository 接口
1 2 3 4 5 6 7 | { IEnumerable<Package> GetAllPackages(); void DeleteByCodePackages( string code); // void InitRepository(); } |
3.SimpleRepository类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | public class SimpleRepository : IRepository { public IDbConnection PicInfoConnection => new SQLiteConnection($ "datasource=\"{AppDomain.CurrentDomain.BaseDirectory}\\PicUp\\picinfos.db\";cache_size=10000" ); /// <summary> /// 获取所有数据 /// </summary> /// <returns></returns> public IEnumerable<Package> GetAllPackages() { return PicInfoConnection.Query<Package>( "select * from packages order by id desc" ); } //public void InitRepository() //{ // try // { // if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "picinfos.db")) // PicInfoConnection.Execute(createPicInfoSQL); // } // catch (Exception ex) // { // } //} //private string createPicInfoSQL = // "-- ----------------------------\n-- Table structure for picinfos\n-- ----------------------------\nDROP TABLE IF EXISTS \"picinfos\";\nCREATE TABLE \"picinfos\" (\n \"id\" INTEGER NOT NULL,\n \"barcode\" TEXT,\n \"pic_path\" TEXT,\n \"update_time\" text,\n \"mark\" integer,\n PRIMARY KEY (\"id\")\n);"; /// <summary> /// 清除指定条码的数据 /// </summary> /// <returns></returns> public void DeleteByCodePackages( string code) { string sqlStr = $ "DELETE from packages WHERE barcode = '{code}'" ; PicInfoConnection.Execute(sqlStr); } } public class Package { public int Id { get ; set ; } public string barcode { get ; set ; } public string pic_path { get ; set ; } public DateTime? update_time { get ; set ; } public string ? mark { get ; set ; } } |
4.App.xaml.cs
public partial class App : Application { public static Autofac.IContainer Container { get; set; } public App() { InitializeComponent(); BuildDependency(); } public static void BuildDependency() { var Builder = new ContainerBuilder(); Builder.RegisterType<picUp.SimpleRepository>().As<IRepository>().SingleInstance(); Container = Builder.Build(); // Container.Resolve<IRepository>().InitRepository(); //Container.Resolve<UploadJob>(); }
5.MainWindow.xaml
<Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBlock Text="图片上传服务地址:" VerticalAlignment="Center" FontWeight="Bold" /> <TextBox x:Name="txtBaseUrl" Margin="3" Height="25" Width="350" Grid.Row="1" Grid.ColumnSpan="2" HorizontalAlignment="Left"/> <Button x:Name="btUpload" Click="btUpload_Click" Grid.Row="3" Style="{StaticResource ButtonPrimary}" Margin="10" Grid.Column="0" Content="上传"/> <Button x:Name="btClose" Click="btClose_Click" Grid.Row="3" Style="{StaticResource ButtonPrimary}" Margin="10" Grid.Column="1" Content="退出"/> </Grid>
6.MainWindow.xaml.cs
public partial class MainWindow : Window { private IRepository _repository; public MainWindow( ) { InitializeComponent(); _repository = App.Container.Resolve<IRepository>(); var picinfo= _repository.GetAllPackages(); IEnumerator enumerator= picinfo.GetEnumerator(); var piclist=new List<Package>(); while (enumerator.MoveNext()) { Package item = (Package)enumerator.Current; piclist.Add(item); } for (int i = 0; i < piclist.Count; i++) { string barcode = piclist[i].barcode; string picUrl = piclist[i].pic_path; // Upload(txtBaseUrl.Text, barcode, picUrl); MessageBox.Show(barcode); } } /// <summary> /// 例子 /// </summary> /// <param name="url"></param> /// <param name="barcode"></param> /// <param name="picUrl"></param> /// <returns></returns> private static bool Upload(string url, string barcode, string picUrl) { RestClient client = new RestClient(); client.Timeout = 5000; client.ReadWriteTimeout = 5000; client.BaseUrl = new Uri($"http://{url}/ydadl/public/common/commitScanInfo.do"); var request = new RestRequest(); request.Method = Method.POST; request.AddParameter("shipId", barcode, ParameterType.GetOrPost); request.AddParameter("weight", 0, ParameterType.GetOrPost); request.AddParameter("inductionId","", ParameterType.GetOrPost); if (true) { client.ExecutePostTaskAsync(request); Thread.Sleep(200); return true; } else { var result = client.Post(request); if (result.StatusCode != System.Net.HttpStatusCode.OK) { return false; } Thread.Sleep(200); } return true; } /// <summary> /// 上传图片 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btUpload_Click(object sender, RoutedEventArgs e) { _repository.DeleteByCodePackages("20003456"); } int i = 0; private void btClose_Click(object sender, RoutedEventArgs e) { btClose.IsEnabled= false; } }
7.Demo源码下载
https://files.cnblogs.com/files/king10086/picUp.zip?t=1702014247&download=true
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器