insertall,insertAll 忽略重复

http://www.itjxue.com  2023-01-15 09:59  来源:未知  点击次数: 

access如何进行更新,追加,删除查询

这个例子是我初学时做的一个项目。你可以看看。using System;

using System.Collections.Generic;

using System.Text;

using System.Data.OleDb;

using System.Configuration;

using XinXingModels;namespace XinXingDAL

{

public class ProgramService

{

#region Private Members

//从配置文件中读取数据库连接字符串

private readonly string connString =

ConfigurationManager.ConnectionStrings["XinXingConnectionString"].ToString();

private readonly string dboOwner =

ConfigurationManager.ConnectionStrings["DataBaseOwner"].ToString();

#endregion /// summary

/// 查询所有账户信息

/// /summary

/// returns/returns

public IListAccount SearchAllRemarks()

{

ListAccount account = new ListAccount();

using (OleDbConnection conn = new OleDbConnection(connString))

{

OleDbCommand objCommand = new OleDbCommand("select * from Account", conn);

conn.Open();

OleDbDataReader objReader = objCommand.ExecuteReader();

while (objReader.Read())

{

Account a = new Account();

a.Id = Convert.ToInt32(objReader["ID"]);

a.Remarks = Convert.ToString(objReader["Remarks"]);

a.LoginID = Convert.ToString(objReader["LoginID"]);

a.Pwd = Convert.ToString(objReader["Pwd"]);

a.TwoPwd = Convert.ToString(objReader["TwoPwd"]);

a.Type = Convert.ToString(objReader["Type"]);

account.Add(a);

}

objReader.Dispose(); conn.Close();

conn.Dispose();

}

return account;

}

/// summary

/// 根据ID和备注查询相关信息

/// /summary

/// param name="id"/param

/// param name="remarks"/param

/// returns/returns

public IListAccount SelectInfoByRemarksAndID(int id, string remarks)

{

ListAccount account = new ListAccount();

using (OleDbConnection conn = new OleDbConnection(connString))

{

Account a = new Account();

string sql = string.Format("select LoginID,Pwd,TwoPwd,Type from Account Where Id={0} and remarks='{1}'", id, remarks);

OleDbCommand objCommand = new OleDbCommand(sql, conn);

conn.Open();

OleDbDataReader objReader = objCommand.ExecuteReader();

if (objReader.Read())

{

a.LoginID = Convert.ToString(objReader["LoginID"]);

a.Pwd = Convert.ToString(objReader["Pwd"]);

a.Type = Convert.ToString(objReader["Type"]);

a.TwoPwd = Convert.ToString(objReader["TwoPwd"]);

account.Add(a);

}

}

return account;

}

/// summary

/// 查询所有备忘录

/// /summary

/// returns/returns

public IListNotepad SearchAllInfoFromNotepad()

{

ListNotepad notepad = new ListNotepad();

using (OleDbConnection conn = new OleDbConnection(connString))

{

OleDbCommand objCommand = new OleDbCommand("select * from Notepad", conn);

conn.Open();

OleDbDataReader objReader = objCommand.ExecuteReader();

while (objReader.Read())

{

Notepad n = new Notepad();

n.Id = Convert.ToInt32(objReader["ID"]);

n.Time = Convert.ToDateTime(objReader["Times"]);

n.Content = Convert.ToString(objReader["Content"]);

notepad.Add(n);

}

objReader.Dispose();

conn.Close();

conn.Dispose();

}

return notepad;

}

/// summary

/// 将备忘录插入

/// /summary

/// returns/returns

public int InsertAllInfoIntoNotepad(string note)

{

int id;

using (OleDbConnection conn = new OleDbConnection(connString))

{

string sql = string.Format("insert into Notepad(content) values('{0}')", note);

OleDbCommand objCommand = new OleDbCommand(sql, conn);

conn.Open();

id = objCommand.ExecuteNonQuery();

}

return id;

}

/// summary

/// 查询最后一条记录

/// /summary

/// returns/returns

public string SelectLastNotepad()

{

string message = "\n";

using (OleDbConnection conn = new OleDbConnection(connString))

{

string sql = string.Format("SELECT top 1 * from notepad order by ID desc");

OleDbCommand objCommand = new OleDbCommand(sql, conn);

conn.Open();

OleDbDataReader objReader = objCommand.ExecuteReader();

while (objReader.Read())

{

message += Convert.ToDateTime(objReader["Times"]) + "\n";

message += Convert.ToString(objReader["Content"]);

}

}

return message;

} public int InsertAccount(string loginID, string pwd,string twoPwd,string remarks,string type)

{

int id;

using (OleDbConnection conn = new OleDbConnection(connString))

{

string sql = string.Format("insert into Account(LoginID,Pwd,TwoPwd,Remarks,Type) values('{0}','{1}','{2}','{3}','{4}')", loginID, pwd, twoPwd, remarks, type);

OleDbCommand objCommand = new OleDbCommand(sql, conn);

conn.Open();

id = objCommand.ExecuteNonQuery();

}

return id;

}

}}

Windows store app 数据存储的几种方法

在开发过程中,我们需要将某些数据保存下来,比如一些设置信息以及一些用户主动去保存的数据。待用户下次打开应用时候,再自动加载这些信息。下面将介绍windows8开发中如何存储数据。

一.本地数据存储

在wp中我们使用IsolatedStorageSettings进行本地数据存储,在win8中也提供类似的方法进行存储,我们使用ApplicationData.Current.LocalSettings。下面将通过实例进行描述:

在节目上添加姓名、年龄、性别三个控件,代码如下:

1 Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"

2 StackPanel Margin="40,40,0,0"

3 StackPanel Orientation="Horizontal" Height="80"

4 TextBlock Text="姓名:" Style="{StaticResource BasicTextStyle}" FontSize="20" VerticalAlignment="Center"/

5 TextBox x:Name="txtName" Text="" FontSize="24" Width="200" Height="40"/

6 /StackPanel

7 StackPanel Orientation="Horizontal" Height="80"

8 TextBlock Text="年龄:" Style="{StaticResource BasicTextStyle}" FontSize="20" VerticalAlignment="Center"/

9 TextBox x:Name="txtAge" Text="" FontSize="24" Width="200" Height="40"/

10 /StackPanel

11 StackPanel Orientation="Horizontal" Height="80"

12 TextBlock Text="性别:" Style="{StaticResource BasicTextStyle}" FontSize="20" VerticalAlignment="Center"/

13 ComboBox x:Name="cbxSex" Height="40" Width="200" SelectedIndex="1"

14 ComboBoxItem男/ComboBoxItem

15 ComboBoxItem女/ComboBoxItem

16 /ComboBox

17 /StackPanel

18 StackPanel Orientation="Horizontal"

19 Button Content="保存" Width="100" Height="40" FontSize="16" Click="btnSave_Click"/Button

20 Button Margin="20,0,0,0" Content="读取" Width="100" Height="40" FontSize="16" Click="btnRead_Click"/Button

21 Button Margin="20,0,0,0" Content="清空" Width="100" Height="40" FontSize="16" Click="btnClear_Click"/Button

22 /StackPanel

23 /StackPanel

24 /Grid

新建类AppDataHelper.cs,引用命名空间using Windows.Storage。我们将读取和保存封装成共通,方便调用。

保存数据:

1 /// summary

2 /// 保存数据

3 /// /summary

4 /// typeparam name="T"数据类型/typeparam

5 /// param name="key"键/param

6 /// param name="value"值/param

7 public static void SaveT(string key, T value)

8 {

9 ApplicationData.Current.LocalSettings.Values[key] = value;

10 }

读取数据:

1 /// summary

2 /// 读取数据

3 /// /summary

4 /// typeparam name="T"数据类型/typeparam

5 /// param name="key"键/param

6 /// returns值/returns

7 public static T ReadT(string key)

8 {

9 if (ApplicationData.Current.LocalSettings.Values.ContainsKey(key))

10 {

11 return (T)ApplicationData.Current.LocalSettings.Values[key];

12 }

13 else

14 {

15 return default(T);

16 }

17 }

删除数据:

1 /// summary

2 /// 移除数据

3 /// /summary

4 /// param name="key"键/param

5 /// returns成功true/失败false/returns

6 public static bool Remove(string key)

7 {

8 return ApplicationData.Current.LocalSettings.Values.Remove(key);

9 }

我们只要在需要存储或者读取数据的地方进行调用,就可以了。

1 private void btnSave_Click(object sender, RoutedEventArgs e)

2 {

3 AppDataHelper.Savestring("name", txtName.Text.Trim());

4 AppDataHelper.Saveint("age", int.Parse(txtAge.Text.Trim())); 5 AppDataHelper.Saveint("sex", cbxSex.SelectedIndex);

6 }

7 private void btnRead_Click(object sender, RoutedEventArgs e)

8 {

9 txtName.Text = AppDataHelper.Readstring("name");

10 txtAge.Text = AppDataHelper.Readint("age").ToString();

11 cbxSex.SelectedIndex = AppDataHelper.Readint("sex");

12 }

那么我们保存的数据保存到哪里去了呢?我们应该如何找到他们,别急,我们下面开始找保持的数据。

打开C:\Users\\AppData\Local\Packages\ \Settings\settings.dat, user_name对应当前登录的用户名,packpage对应此应用的唯一标识,在Package.appxmanifest中我们可以找到它:

此文件为.dat后缀,我们需要用注册表工具打开它,开始-运行(win+R键),输入Regedit,在打开的窗口里面选择 HKEY_LOCAL_MACHINE,

然后选择文件-加载配置单元,选择settings.dat文件,打开填入项名称,确定之后可以看到保存的数据会显示在其中。

双击name,打开,我们可以看到存储的数据值。

那么我们是否能像wp那样存储一个对象到本地存储呢,答案是否定的。win8中只能存储一些简单类型,如int、bool、string等

下面有一个Person对象:

1 [DataContract]

2 public class Person

3 {

4 [DataMember]

5 public string Name { get; set; }

6 [DataMember]

7 public int Age { get; set; }

8 [DataMember]

9 public int Sex { get; set; }

10 }

进行存储:

1 Person person = new Person()

2 {

3 Name = txtName.Text.Trim(),

4 Age = int.Parse(txtAge.Text.Trim()),

5 Sex = cbxSex.SelectedIndex

6 };

7 AppDataHelper.SavePerson("person", person);

此时会报错,提示不支持此类型存储。

那么我们应该如何存储一个对象呢?下面我们将介绍文件存储。

二.文件存储

对于那些比较复杂的数据类型,我们需要将其存储为文件的形式存储在应用中。StorageFile的存储,以文件的形式进行存储存入数据。

新建一个类,LocalFileHelper.cs

存储文件:

1 /// summary

2 /// 存储数据/// /summary

3 /// typeparam name="T"数据类型/typeparam

4 /// param name="fileName"文件名称/param

5 /// param name="data"数据/param

6 /// returns无/returns

7 public async static Task SaveT(string fileName, T data)

8 {

9 //取得当前程序存放数据的目录

10 StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;

11 //创建文件,如果文件存在就覆盖

12 StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

13 using (Stream newFileStream = await file.OpenStreamForWriteAsync())

14 {

15 DataContractSerializer ser = new DataContractSerializer(typeof(T));

16 ser.WriteObject(newFileStream, data);

17 newFileStream.Dispose();

18 }

19 }

读取文件:

1 /// summary

2 /// 读取数据

3 /// /summary

4 /// typeparam name="T"数据类型/typeparam

5 /// param name="fileName"文件名称/param

6 /// returns数据/returns

7 public async static TaskT ReadT(string fileName)

8 {

9 T t = default(T);

10 try

11 {

12 StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;

13 StorageFile file = await folder.GetFileAsync(fileName);

14 if (file == null)

15 return t;

16 Stream newFileStream = await file.OpenStreamForReadAsync();

17 DataContractSerializer ser = new DataContractSerializer(typeof(T));

18 t = (T)ser.ReadObject(newFileStream);

19 newFileStream.Dispose();

20 return t;

21 }

22 catch (Exception)

23 {

24 return t;

25 }

26 }

删除文件:

1 /// summary

2 /// 删除文件

3 /// /summary

4 /// param name="fileName"文件名称/param

5 /// returns成功true/失败false/returns

6 public async static Taskbool Delete(string fileName)

7 {

8 StorageFolder folder = Windows.Storage.ApplicationData.Current.LocalFolder;

9 StorageFile file = await folder.GetFileAsync(fileName);

10 if (file != null)

11 {

12 try

13 {

14 await file.DeleteAsync();

15 }

16 catch (Exception)

17 {

18 return false;

19 }

20 }

21 return true;

22 }

使用方法:

1 Person person = new Person()

2 {

3 Name = txtName.Text.Trim(),

4 Age = int.Parse(txtAge.Text.Trim()),

5 Sex = cbxSex.SelectedIndex

6 };

7

8 await LocalFileHelper.SavePerson("person.xml", person);

9

10 ListPerson list = new ListPerson();

11 list.Add(person);

12 list.Add(person);

13 await LocalFileHelper.SaveListPerson("personList.xml", list);

14

15

16 Person newPerson = await LocalFileHelper.ReadPerson("person.xml");

17 ListPerson personList = await LocalFileHelper.ReadListPerson("personList.xml");

文件在哪里?

同样我们打开C:\Users\user_name\AppData\Local\Packages\package\LocalState文件夹,下面就有我们保持的文件,打开文件,保存文件的内容格式为xml:

Person xmlns="" xmlns:i=""Age

27/AgeNameBetterChaner/NameSex0/Sex/Person

三.使用Sqlite进行数据存储

Sqlite现已提供对Windows RT和Windows 8 Metro应用的支持.

首先,在工具,选择扩展与更新中,选择联机,在搜索框内输入sqlite,找到SQLite for Window Runtime,下载安装。

安装完成之后重启VS,右击项目添加引用,选择Windows-扩展,找到Mircosoft visual c++ runtime package和sqlite for windows runtime,打勾,确定。

由于目前Sqlite不支持AnyCPU,所以我们将项目改成X64,右击解决方案,属性,修改之。

然后右击引用,选择管理Nuget程序包,联机搜索sqlite-net,下载安装。

我们发现项目工程中多了2个类文件,SQLite.cs和SQLiteAsync.cs

基本操作:

1 //创建数据库

2 string dbRootPath = Windows.Storage.ApplicationData.Current.LocalFolder.Path;

3 SQLiteConnection db = new SQLiteConnection(Path.Combine(dbRootPath, "myApp.sqlite"));

4

5 //创建表

6 db.CreateTablePerson();

7

8 //插入一条数据

9 db.Insert(new Person() { Name = "BetterChaner", Age = 27, Sex = 1 });

10

11 //插入多条数据

12 ListPerson list = new ListPerson();

13 list.Add(new Person() { Name = "Zhangsan", Age = 27, Sex = 1 });

14 list.Add(new Person() { Name = "Lisi", Age = 32, Sex = 0 });

15 list.Add(new Person() { Name = "Wangwu", Age = 24, Sex = 1 });

16 db.InsertAll(list);

17

18 //查询数据

19 ListPerson list2 = db.QueryPerson("select * from Person");

20

21 //更新数据

22 SQLiteCommand cmd = db.CreateCommand("update Person set Age=21 where Name='Lisi'");

23 cmd.ExecuteNonQuery();

24

25 //删除一条数据

26 db.Delete(new Person() { Name = "Zhangsan", Age = 27, Sex = 1 });

27 //删除全部数据

28 db.DeleteAllPerson();

数据存储的位置为:C:\Users\\AppData\Local\Packages\ \LocalState\文件夹下的myApp.sqlite

四.SqlCE

有了Sqilte,SqlCE不太经常会用到了,在这里就不写出实例了,与wp中类似。

小结

以上为windows store app开发中可以使用的几种存储数据的方式,可以根据数据大小、作用以及类型选择应该使用哪一种存储方式。

mysql 存储过程动态指明表名字。谢谢。

MySQL 处理动态 SQL

需要用

PREPARE sl FROM @sql;

EXECUTE sl;

DEALLOCATE PREPARE sl;

这样的语句。

MySQL 动态SQL 的例子 如下

oracle中是否可以同时向多个表中插入数据

请描述需求准确些哥们

-----可以一条insert插入多个表,使用insert

all或者insert

first,但是这种插入,有限制,就是插入的values必须从select出的data中获取,比如,insert

all

into

stu

values(id,name)

into

class(id)

values(id)

select

id,name

from

stu;这个select关键字在insert

all和insert

first中必须存在,具体使用方法可以查oracle手册或者直接百度。

uwp sqlite 如何设置两个字段为主键

在VS 中新建一个 UWP 应用项目。

在 解决方案资源管理器 窗口中的 引用 节点上右击,然后执行 管理NuGet程序包菜单。

查找并安装以下两个组件,如下图所示:

注:

- SQLite.WUP.Native是必须安装的,它是封装sqlite操作函数的本地库,如果你用的是C++语言来开发,可以直接调用。如果不安装这个,在运行时会报找不到 sqlite3.dll 的错误。

- SQLiteWrapperUWP-PCL也应该安装,它对sqlite的操作接口进行进一步封装,并且支持 LINQ 处理。

安装成功后,在引用列表会看到相关条目,如下图所示:

在代码中引入以下相关的命名空间,如下图所示:

要连接并创建表,要使用 SQLiteConnection 类,在构造实例时,用到两个必须的参数(其他参数可选):

sqlitePlatform:类型是 ISQLitePlatform 接口,它的实现类型是 SQLitePlatformWinRT ;

databasePath:数据库文件的路径,注意,由于UWP应用默认允许访问的路径不多,通常是本地目录。为了避免发生异常,可以通过 ApplicationData类来获取localFolder实例,然后从目录实例的 Path 属性得到本地目录的完整路径,再传递给该参数。

比如这样建立连接,如下图所示:

当连接完不再需要时, 可以调用Dispose方法释放掉,或者干脆把连接的实例化放到一个 using 语句块中。

定义数据表模型,比如,我定义了一个 Student 类,它表示一张表,如下图所示:

注:对于要用于建表的类,要加上 Table 特性,对于属性,其实是映射到列,要加上Column特性。AutoImcrement特性表示字段的数值是自增长列。

创建表。实例化数据库连接后,可以调用连接对象的 CreateTable 方法直接创建表,如下图所示:

CreateTable方法如果返回0,表明表创建无误。

插入数据。实例化连接对象后,访问 Insert 方法插入单条数据;InsertAll 方法插入多条数据;InsertOrReplace插入数据并替换已存在的记录;InsertOrReplaceAll 插入多条数据,并替换已存在项,如下图所示:

上面代码先用DeleteAll方法删除表中的所有记录,然后插入四条记录,插入方法返回已成功写入的记录数目,上面代码应返回 4 。

查询数据。可以用 LINQ 来查询,如下图所示:

Table 方法返回一个 TableQuery实例,然后可以用 LINQ语句来处理。本例中筛选所有数据,并接照Age属性升序排列。

tp5 Excel 批量导入 --- 2019-07-17

//引入Excel公共类

vendor("PHPExcel.Classes.PHPExcel");

vendor('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');

vendor('PHPExcel.Classes.PHPExcel.Reader.Excel5');

$objPHPExcel = new \PHPExcel();

$file = request()-file('filename');

$info = $file-validate(['ext' = 'xlsx,xls,csv'])-move(ROOT_PATH . 'public' . DS . 'uploads/import');//上传验证后缀名,以及上传之后移动的地址

if($info){

$exclePath = $info-getSaveName();? //获取文件名

$file_name = ROOT_PATH . 'public' . DS . 'uploads/import' . DS . $exclePath;? //上传文件的地址

$objReader =\PHPExcel_IOFactory::createReader('Excel5');

$obj_PHPExcel =$objReader-load($file_name, $encode = 'utf-8');? //加载文件内容,编码utf-8

$excel_array=$obj_PHPExcel-getsheet(0)-toArray();? //转换为数组格式

array_shift($excel_array);? //删除第一个数组(标题);

$datas = [];

$data_errors = [];

//处理Excel导入时数据为空的情况

foreach($excel_array as $k=$v) {

if(!empty($v[0] || $v[1] || $v[2])){

$excel_list[] = $v;

}

}

$cn=count($excel_list);

//循环遍历,组装数据进行入库

foreach ($excel_list as $k=$v){

if(!empty($v[0]) !empty($v[1])){

$wh['job_number'] = $v[0];

$wh['is_deleted'] = '1';

$res_info=db('member')-where($wh)-count();

if($res_info ==0){

$data=array(

'job_number'=$v[0],

'user_name'=$v[1],

'department'=$v[2],

'create_id' =$admin_id,

'create_time'=date('Y-m-d H:i:s'),

);

$datas[] = $data;

}

? ? ? }else{

$error_data=array(

'job_number'=$v[0],

'user_name'=$v[1],

'department'=$v[2],

'create_id' =$admin_id,

'create_time'=date('Y-m-d H:i:s'),

);

$data_errors[] = $error_data;

}

}

$errors_data = count($data_errors);

$repetition = $cn-$errors_data;

$success=db('member')-insertAll($datas); //批量插入数据

if($success){

$cn_fail=count($data_errors);

$content = "批量新增抽奖参与者名单记录:".json_encode($data);

$this-writelog($admin_id,$content,'4');//4出席成员

$error=$cn-$success;

$error_all = $error-$cn_fail;

$data = array(

'code'=1,

'message'="总{$cn}条,导入成功{$success}条,其中失败{$cn_fail}条,重复{$error_all}条",

'result'=$data_errors,

);

return json($data);

}

return json(['code'=1,'message'="总{$cn}条,导入成功0条,其中重复{$repetition}条,失败{$errors_data}条",'result'=$data_errors]);

}else{

// 上传失败获取错误信息

return json(['code'=2,'message'='导入失败','result'=null]);

}

(责任编辑:IT教学网)

更多

相关安全产品文章

推荐安全产品文章