【发布时间】:2019-02-22 05:16:48
【问题描述】:
using System;
using System.Collections.Generic;
using Microsoft.Data.Sqlite;
namespace DataAccessLibrary
{
public static class DataAccess
{
public static void InitializeDatabase()
{
using (SqliteConnection db =
new SqliteConnection("Filename=Crab.db"))
{
db.Open();
String tableCommand = "create table if not exists MyTable (Crab integer primary key AutoIncrement," + " Box varchar(20)," + " Data varchar(20)," + "Data1 varchar(20)," + " Data2 varchar(20)," + "Data3 varchar(20)," + " Data4 varchar(20)," + " Data5 varchar(20))";
SqliteCommand createTable = new SqliteCommand(tableCommand, db);
createTable.ExecuteReader();
}
}
public static void AddData(string inputText,string inputText1,string inputText2)
{
using (SqliteConnection db =
new SqliteConnection("Filename=Crab.db"))
{
db.Open();
SqliteCommand insertCommand = new SqliteCommand();
insertCommand.Connection = db;
insertCommand.CommandText = "insert into MyTable (Data,Data1,Data2) values (@Data,@Data1,@Data2)";
insertCommand.Parameters.AddWithValue("@Data", inputText);
insertCommand.Parameters.AddWithValue("@Data1", inputText1);
insertCommand.Parameters.AddWithValue("@Data2", inputText2);
insertCommand.ExecuteReader();
db.Close();
}
}
public static void Add(string inputText3,string inputText4,string inputText5)
{
using (SqliteConnection db =
new SqliteConnection("Filename=Crab.db"))
{
db.Open();
SqliteCommand insertCommand = new SqliteCommand();
insertCommand.Connection = db;
insertCommand.CommandText = "insert into MyTable (Data3,Data4,Data5) values (@Data3,@Data4,@Data5)";
insertCommand.Parameters.AddWithValue("@Data3", inputText3);
insertCommand.Parameters.AddWithValue("@Data4", inputText4);
insertCommand.Parameters.AddWithValue("@Data5", inputText5);
insertCommand.ExecuteReader();
db.Close();
}
}
public static List<String> GetData()
{
List<String> entries = new List<string>();
using (SqliteConnection db =
new SqliteConnection("Filename=Crab.db"))
{
db.Open();
SqliteCommand selectCommand = new SqliteCommand
("select Crab from MyTable", db);
selectCommand = new SqliteCommand
("select Box from MyTable", db);
selectCommand = new SqliteCommand
("select Data from MyTable", db);
selectCommand = new SqliteCommand
("select Data1 from MyTable", db);
selectCommand = new SqliteCommand
("select Data2 from MyTable", db);
selectCommand = new SqliteCommand
("select Data3 from MyTable", db);
selectCommand = new SqliteCommand
("select Data4 from MyTable", db);
selectCommand = new SqliteCommand
("select Data5 from MyTable", db);
SqliteDataReader query = selectCommand.ExecuteReader();
while (query.Read())
{
entries.Add(query.GetString(0));
}
db.Close();
}
return entries;
}
}
}
我可以知道为什么以这种方式插入数据吗?我试图让它在一行中有 6 条记录。请帮忙!有没有办法让它填满第一行而不是新行?
<Page
x:Class="UWPDataTest.BlankPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UWPDataTest"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<StackPanel>
<TextBox x:Name="Data3" Text="" VerticalAlignment="Top" Width="1300"/>
<TextBox x:Name="Data4" Text="" VerticalAlignment="Top" Width="1300"/>
<TextBox x:Name="Data5" Text="" VerticalAlignment="Top" Width="1300"/>
<Button x:Name="button" Content="Done" Click="Add" HorizontalAlignment="Left" Margin="694,190,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.684,0.293"/>
</StackPanel>
</Grid>
</Page>
这是设计的布局。总共有 2 页,tb 名称为 Data - Data5。
【问题讨论】:
-
我不明白你的问题。代码完全按照它所说的去做 - Add 只插入第 3-5 列,而 AddData 只插入第 0-2 列 - 每个插入都是一个新行
-
好吧,您正在执行两个单独的
INSERT语句。每个INSERT都会在您的表中创建一条新记录。将它们组合成一个语句。 -
@MartinZikmund 您好,感谢您的及时回复!请问我怎样才能让它更新3-5?抱歉,我是 c# 和 sqlite 的新手。
-
@Pierre-LoupPagnez ^!感谢您的及时回复!我可以知道我能做什么吗?
-
检查 SQL 中的 UPDATE 关键字,就是这样做的 :-)