我需要检查列是否存在,如果不存在则添加它.根据我的研究,看起来sqlite不支持IF语句,而应该使用case语句.
这是我到目前为止:
SELECT CASE WHEN exists(select * from qaqc.columns where Name = "arg" and Object_ID = Object_ID("QAQC_Tasks")) = 0 THEN ALTER TABLE QAQC_Tasks ADD arg INT DEFAULT(0);
Run Code Online (Sandbox Code Playgroud)
但我收到错误:"ALTER"附近:语法错误.
有任何想法吗?
我遇到了SQLite数据库的问题.我正在使用http://www.ch-werner.de/sqliteodbc/中的SQLite ODBC . 安装了64位版本并使用以下设置创建了ODBC:

我打开Access数据库并链接到数据源.我可以打开表,添加记录,但不能删除或编辑任何记录.有没有什么我需要修复ODBC端允许这个?我尝试删除记录时遇到的错误是:
Microsoft Access数据库引擎停止了该过程,因为您和另一个用户正在尝试同时更改相同的数据.
当我编辑记录时,我得到:
自您开始编辑以来,其他用户已更改该记录.如果保存记录,则将覆盖其他用户所做的更改.
保存记录已禁用.只能复制到剪贴板或删除更改.
我一直在尝试构建一个 Windows ConsoleApp 作为 WebService 运行来来回同步一些数据我已经构建了一个用于同步的项目,当我通过我的 wpf 项目运行它时,它似乎可以工作,但事实并非如此。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.Http;
using System.Net.Http.Headers;
using QAQC_DataCommon.Models;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
Gettasks();
}
public static async void Gettasks()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost/QAQC_SyncWebService/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var response = await client.GetAsync("Tasks/?username=XXXXXX&LastUpdated=1/1/15");
if (response.IsSuccessStatusCode)
{
List<QaqcRow> ls = await response.Content.ReadAsAsync<List<QaqcRow>>();
foreach (QaqcRow qaqcRow in ls)
{
Debug.WriteLine(qaqcRow.GetValue("BusinessUnit"));
}
}
}
catch (Exception) …Run Code Online (Sandbox Code Playgroud) 我试图通过引用传递读者或返回一个.我在回归时遇到了问题.
public static SqlDataReader GetSql(string businessUnit, string taskId)
{
const string connstring = "Connection string";
SqlConnection conn = new SqlConnection(connstring);
SqlCommand command = new SqlCommand();
SqlDataReader reader;
try
{
conn.Open();
command.Connection = conn;
command.CommandType = CommandType.Text;
command.CommandText =
"SELECT * FROM Audits WHERE BusinessUnit = @BU AND TaskID = @TID";
command.Parameters.AddWithValue("@BU", businessUnit);
command.Parameters.AddWithValue("@TID", taskId);
return reader = command.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
return null;
}
finally
{
conn.Close();
}
}
SqlDataReader reader = QaqcsqlLib.GetSql("job", "Task1");
if (reader.HasRows)
{
while …Run Code Online (Sandbox Code Playgroud) 这只是一个快速的问题.
我有两个组合框,其中一个具有硬编码的数据:
<ComboBox>
<ComboBoxItem/>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
当我尝试在SelectionChanged上使用case语句时,我得到Convert.ToString(cboForm.SelectedValue): "System.Windows.Controls.ComboBoxItem: Directional Bore"一个值.
现在在同一个表单上,我有另一个组合框,其中包含我填充的数据,comboboc.items.add()并且SelectionChanged之后的组合框的值是实际文本值.
有什么我可以做到没有"System.Windows.Controls.ComboBoxItem: "选定的值吗?
案例陈述:
string caseSwitch = cboForm.SelectedValue.ToString();
switch (caseSwitch)
{
case "System.Windows.Controls.ComboBoxItem: Directional Bore":
{
ReportClass.DirBoreReport("","","");
cboForm.SelectedIndex = -1;
//MainAccess.Mw.SpecificForm = false;
//MainAccess.Mw.frmPage.Height = 4400;
//MainAccess.Mw.HoldPage = new Uri("DirectionalBore_Combined.xaml", UriKind.Relative);
//if (NavigationService != null) NavigationService.Source = MainAccess.Mw.HoldPage;
//MainAccess.Mw.SectionBar_DirectionalBore.Visibility = Visibility.Visible;
//MainAccess.Mw.scroll.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
//MainAccess.Mw.lblForm.Content = "DIRECTIONAL BORE";
//MainAccess.Mw.Sbar = MainAccess.Mw.SectionBar_DirectionalBore;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<ComboBox x:Name="cboForm" TabIndex="3" HorizontalAlignment="Left" Margin="746,618,0,0" VerticalAlignment="Top" Width="630" FontSize="48" FontWeight="Bold" Height="74" …Run Code Online (Sandbox Code Playgroud) 我有一个在Business Intelligence Studio 2008中构建的RDL报告,我遇到了一个不需要的分页符问题.
我有一个数据集,其中包含一个带有一些求和数据的单表.我已添加到列表中并添加了两个组.

我甚至检查了每个的分页属性.


该报告工作正常,但我最顶级的组似乎是分页,在开头留下额外的页面.
我想要发生的是让最顶层的组是页眉,第二组是细节的组头.我是以错误的方式来做这件事的吗?
我正在构建一个sqlwrapper来处理MSsql和Sqlite,到目前为止我没有使用通用dbconnection,dataset和dataadapter的问题,但是使用dbcommand parameters.add是唯一的选择.我想像sqlcommand和sqlitecommand那样使用parameter.addwithvalue,但我不确定如何实现它.
例如,这是我的sqlitefactory:
public class SqlLiteFactory : SqlFactory
{
public override DbConnection CreateConnection()
{
return new SQLiteConnection(ConfigurationManager.ConnectionStrings["ClientDBConnectionString"].ConnectionString);
//return new SQLiteConnection("Data Source=Resources\\qaqc.sqlite;Version=3");
}
public override DataAdapter CreateAdapter(string command, DbConnection connection)
{
return new SQLiteDataAdapter(command, connection as SQLiteConnection);
}
public override DbCommand CreateCommand()
{
return new SQLiteCommand();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的实现:
DbConnection c = SqlHandler.Instance.CreateConnection();
DbCommand cmd = SqlHandler.Instance.CreateCommand();
cmd.Connection = c;
cmd.CommandText = "SELECT column FROM table WHERE syncstatus = 0 and UserName = @user GROUP BY column;";
cmd.Parameters.Add("@user");
cmd.Parameters["@user"].Value = SystemInformation.UserName; …Run Code Online (Sandbox Code Playgroud) 从读取器转换日期时间时出现问题,其值为null.
form._date101 = reader[52] == DBNull.Value ? DBNull.Value : (DateTime?)reader[52];
Run Code Online (Sandbox Code Playgroud)
获取:无法确定条件表达式的类型,因为'System.DBNull'和'System.DateTime?'之间没有隐式转换
有任何想法吗?
c# ×5
sqlite ×2
wpf ×2
ado.net ×1
combobox ×1
dpi ×1
httpclient ×1
ms-access ×1
odbc ×1
sql ×1
sql-server ×1
sqlite-odbc ×1
ssrs-2008 ×1
web-services ×1