我编写了一个MySQL脚本来为假设的医院记录创建数据库并用数据填充它.其中一个表Department有一个名为Description的列,它被声明为varchar(200)类型.当为描述执行INSERT命令时,我得到一个错误1406 : __CODE__. 我插入的所有字符串都少于150个字符.
这是宣言:
__CODE__
这是插入命令:
从外表看,这应该是有效的.有人有见识吗?__CODE__
我继承了以下数据库设计.表是:
customers
---------
customerid
customernumber
invoices
--------
invoiceid
amount
invoicepayments
---------------
invoicepaymentid
invoiceid
paymentid
payments
--------
paymentid
customerid
amount
Run Code Online (Sandbox Code Playgroud)
我的查询需要返回给定客户编号的invoiceid,发票金额(在发票表中)和应付金额(发票金额减去对发票的任何付款).客户可能有多张发票.
当对发票进行多次付款时,以下查询为我提供了重复记录:
SELECT i.invoiceid, i.amount, i.amount - p.amount AS amountdue
FROM invoices i
LEFT JOIN invoicepayments ip ON i.invoiceid = ip.invoiceid
LEFT JOIN payments p ON ip.paymentid = p.paymentid
LEFT JOIN customers c ON p.customerid = c.customerid
WHERE c.customernumber = '100'
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
我的网页在安全服务器(https)上,我正在尝试连接SQL Server 2008数据库,这是普通的服务器.我在页面本身上编写连接字符串,而不是在web.config文件中.我收到以下错误: -
System.Data.SqlClient.SqlException: Login failed.
The login is from an untrusted domain and cannot be used with Windows authentication.
Run Code Online (Sandbox Code Playgroud)
请帮助,如何连接它,我是否必须为它做一些web服务.
我的代码如下:
public void FillCity()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "integrated security=SSPI;data source=dev-fcb; user id=sa;password=password;"
+"persist security info=False;database=mediapro";
con.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("select * from StateCityMaster where IsActive='1' order by CityName", con);
DataSet ds = new DataSet();
da.Fill(ds);
string CityName = string.Empty;
if (ds.Tables[0].Rows.Count > 0)
{
CityName = ds.Tables[0].Rows[0]["CityName"].ToString();
} …Run Code Online (Sandbox Code Playgroud) 我的表中有一个bigint(ProductSerial)类型的列.我需要使用like运算符通过Product serial过滤表.但我发现,像运算符一样不能用于整数类型.
有没有其他方法(我不想使用=运算符).
我从前端得到日期参数值为'4-1-2009'.现在我想成为
在我的存储过程中'4-1-2010'.我在尝试如下.
ALTER PROCEDURE [dbo].[SP_EMP]
@STARTDATE DATETIME,
@ENDDATE DATETIME,
@STARTDATE2 DATETIME,
SET @STARTDATE2=DATEADD(yy, 1, @STARTDATE)
AS
BEGIN
SELECT EMPNAME FROM EMP WHERE JOINDATE>@STARTDATE2
----// SOME JOINS //----
END
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?请告诉我.
此致,N.SRIRAM
ID Date1 Date2 Date3
158 5/3/13 15:11 2/20/13 11:38 2/20/13 11:38
Run Code Online (Sandbox Code Playgroud)
我想从这三列中获取最新日期.
我有一个表与一个典型的unsigned int主键id
select * from log_data where id between -129 and -120
Run Code Online (Sandbox Code Playgroud)
看似试图返回表格中的每一行(或至少陷入'发送数据'几个小时)
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE log_data ALL PRIMARY NULL NULL NULL 357114 Using where
Run Code Online (Sandbox Code Playgroud)
据上的文档BETWEEN在https://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between:
这等同于表达式(分钟<= EXPR AND EXPR <=最大值)如果所有参数都是相同的类型
然而,
select * from log_data where -129 <= id and id <= -120
Run Code Online (Sandbox Code Playgroud)
表现得像我期望的那样.
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible …Run Code Online (Sandbox Code Playgroud) 我有两张桌子如下
Table 1 ----------------------------------- UserID | UserName | Age | Salary ----------------------------------- 1 | foo | 22 | 33000 -----------------------------------
Table 2 ------------------------------------------------ UserID | Age | Salary | CreatedDate ------------------------------------------------ 1 | NULL | 35000 | 2015-01-01 ------------------------------------------------ 1 | 28 | NULL | 2015-02-01 ------------------------------------------------ 1 | NULL | 28000 | 2015-03-01 ------------------------------------------------
我需要这样的结果.
Result ----------------------------------- UserID | UserName | Age | Salary ----------------------------------- 1 | foo | 28 | 28000 -----------------------------------
这只是一个例子.在我的真实项目中,我在上表中有大约6列,如Age和Salary.
在表2中,每条记录只有一个值,即如果Age有值,则Salary将为NULL,反之亦然.
更新:
表2包含CreatedDate列.所以我想获得最新的"NOTNULL"CELL值而不是最大值.
我有一个带有注入的EntityManager em的托管无状态会话bean.
我想要做的是拥有一个具有唯一列的数据库表.然后我运行一些试图插入实体的算法.如果实体存在,则会更新或跳过它.
我想要这样的东西:
try {
em.persist(cd);
em.flush();
} catch (PersistenceException e) {
// Check if the exception is DatabaseException and ConstraintViolation
// Update instead or skip it
}
Run Code Online (Sandbox Code Playgroud)
问题是我只能抓到PersistenceException.DatabaseException没有被抓住.这是可悲的,因为只有DatabaseException已调用的方法getDatabaseErrorCode(),我想用它来检查重复的条目.我不理解它因为PersistenceException.getCause()回归DatabaseException.
所以我的问题是:如何捕获DatabaseException并检查MySQL错误代码?
感谢您对此的任何想法和经验.
我创建了一个用于访问在线数据库的链接服务器,以便我可以从在线数据库中选择新记录,并根据客户ID将它们插入到本地数据库中.这是我选择新记录的查询:
SELECT * FROM [194.0.252.151].onlineDB.dbo.customers
WHERE [194.0.252.151].onlineDB.dbo.customers.CustomerID
NOT IN
(SELECT CustomerID FROM LocalDB.dbo.customers)
Run Code Online (Sandbox Code Playgroud)
让我说,从onlineDB选择的操作工作得很好,但上面的代码不返回来自onlineDB的必需(新)记录.错误说:
The multi-part identifier "194.0.252.151.onlineDB.dbo.customers.CustomerID" could not be bound.
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我犯的错误.任何帮助,将不胜感激.