Tag: sql

执行存储过程时,使用CommandType.StoredProcedure与使用CommandType.Text有什么好处?

所以在C#中使用存储过程我有如下代码(省略连接代码): string sql = “GetClientDefaults”; SqlCommand cmd = new SqlCommand(sql); cmd.CommandType = CommandType.StoredProcedure; //<– DO I NEED THIS?? cmd.Parameters.AddWithValue("@computerName", computerName); 其中sql是存储过程的名称。 现在,这个代码似乎在有和没有注释行的情况下工作得很好。 那么,我需要这条线吗? 设置这个有一些表现(或其他)好处吗? 不设置或将其设置为文本有什么好处?

如何将图像存储到varbinary(max)列?

我在将一个Image插入sql server 2008时遇到了这个以下的SQLexception。 不允许从数据类型nvarchar到varbinary(max)的隐式转换。 使用CONVERT函数运行此查询 在数据库中,Image列的数据类型是Varbinary(MAX)。 编辑 代码解除了评论 paramaters.Add(getParam(“@imageFilePath”, DbType.AnsiString, imageFilePath));

在C#中使用SQLite.NET获取最后一个插入ID

我有一个简单的问题,一个不那么简单的解决方案……我目前正在将一些数据插入到这样的数据库中: kompenzacijeDataSet.KompenzacijeRow kompenzacija = kompenzacijeDataSet.Kompenzacije.NewKompenzacijeRow(); kompenzacija.Datum = DateTime.Now; kompenzacija.PodjetjeID = stranka.id; kompenzacija.Znesek = Decimal.Parse(tbZnesek.Text); kompenzacijeDataSet.Kompenzacije.Rows.Add(kompenzacija); kompenzacijeDataSetTableAdapters.KompenzacijeTableAdapter kompTA = new kompenzacijeDataSetTableAdapters.KompenzacijeTableAdapter(); kompTA.Update(this.kompenzacijeDataSet.Kompenzacije); this.currentKompenzacijaID = LastInsertID(kompTA.Connection); 最后一行很重要。 为什么我提供连接? 那么有一个名为last_insert_rowid()的SQLite函数,您可以调用它并获取最后一个插入ID。 问题是它绑定到一个连接,.NET似乎重新打开并关闭每个数据集操作的连接。 我认为从表适配器获取连接会改变一些事情。 但事实并非如此。 有谁知道如何解决这个问题? 也许从哪里获得持续的连接? 或者更优雅的东西? 谢谢。 编辑: 这也是事务的问题,如果我想使用事务,我需要相同的连接,所以这也是一个问题……

以编程方式生成SQL代码

我通过右键单击数据库,通过在任务菜单中生成脚本手动生成脚本 。 现在我的问题是通过c#代码生成该脚本… 我的问题是 是否可以通过c#代码生成? 给我一些提示才能完成? 等待您宝贵的建议和命令。

带有IN语句的Oracle参数?

得到了我需要修改的#.net应用程序。 此刻的查询有效地做到了这一点: select * from contract where contractnum = :ContractNum (非常简化,只是为了表明我们使用的是=和一个参数) 该参数是从C#app上的Settings.Settings文件中读取的,并且其中包含一个字符串。 我需要修改它以包含多个合同,所以我想我可以将SQL更改为: select * from contract where contractnum in (:ContractNum) 但无论我如何格式化参数中的字符串,都不会返回任何结果。 有没有办法让oracle用参数做一个IN? 任何帮助表示感谢,谢谢大家。

如何正确地将日期时间从c#传递给sql?

我有一张表,其中的日期时间格式为: 2011-07-01 15:17:33.357 当我在对象上执行.ToString()时,我正在接受ac#DateTime我得到的格式为DateTime: 04/07/2011 06:06:17 我想知道我是如何正确传递正确的DateTime的,因为当我运行我们代码中的SQL时它不起作用(即选择正确的DateTime)。 我不能使用SQL分析器。 这是代码: //looks to if a user has had any activity in within the last time specified public bool IsUserActivitySinceSuppliedTime(int userId, DateTime since) { //get everything since the datetime specified [usually 5 hours as this is //how long the session lasts for string sql = “SELECT * FROM […]

CommandType.Text与CommandType.StoredProcedure

显式使用StoredProcedure CommandType与仅使用Text Command相比有什么好处? 换句话说,是 cmd = new SqlCommand(“EXEC StoredProc(@p1, @p2)”); cmd.CommandType = CommandType.Text; cmd.Parameters.Add(“@p1”, 1); cmd.Parameters.Add(“@p2”, 2); 比任何更糟糕的 cmd = new SqlCommand(“StoredProc”); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(“@p1”, 1); cmd.Parameters.Add(“@p2”, 2); 编辑:修复了错误的复制粘贴作业(再次)。 此外,问题的重点是数据访问类。 我宁愿能够将存储的proc名称和参数传递到一行,而不是每个参数的额外行。

使用Entity Framework从动态创建的表中查询数据

TLDR; 当在编译时不知道表名时,如何使用Entity Framework从表中读取数据? 有一个外部系统处理大量信息,然后为每个批处理运行创建一个新表,并将一些数据存储在该表中。 这些新表的列布局是事先已知的,因此我从现有数据库生成了ADO.NET实体数据模型(edmx文件) ,其中有一个表具有完全相同的列布局。 该数据库中的原始表称为ResultTableTemplate ,因此表示该表的实体类也称为ResultTableTemplate 。 我试图弄清楚如何使用我的ADO.NET实体数据模型从那些动态创建的表中读取,并获取IEnumerable 。 到目前为止我所做的是: public IEnumerable GetResultsFromTable(string tableName) { using (var context = new WorkdataEntities()) { var table = context.CreateQuery(“SELECT ” + “ALL_THOSE_COLUMN_NAMES… ” + “FROM ” + tableName; var query = from item in table select item; return query.ToList(); } } 当我运行查询时,我得到一个带有以下消息的System.Data.EntitySqlException : 无法在当前范围或上下文中解析“ResultTable419828”。 确保所有引用的变量都在范围内,加载了所需的模式,并正确引用了名称空间。 近成员访问表达式,第1行,第225列。 […]

SqlParameter C#上的表名和表字段?

我想知道如何通过C#上的SqlCommand传递表名和表字段名。 尝试通过使用@符号设置SqlCommand但不起作用来完成它。 有任何想法吗??

在SELECT IN中使用Oracle参数的问题

在sql查询中插入一串数字时遇到问题 SELECT * FROM tablename a WHERE a.flokkurid IN (3857,3858,3863,3285) ORDER BY sjodategund, rodun …要么: SELECT * FROM tablename a WHERE a.flokkurid IN (:strManyNumbers) ORDER BY sjodategund, rodun …使用此代码: using (OracleCommand sel = new OracleCommand(SQL, connectionstring)) { sel.Parameters.Add(“:strManyNumbers”, OracleDbType.Varchar2, “Client”, ParameterDirection.Input); } 所以,如果我运行此查询,我得到: ORA-01722:无效的号码 但如果我只插入一个数字,即“3857”,它将返回查询确定数据。